Bash fastCGI 在没有给出参数时显示很多信息
Posted
技术标签:
【中文标题】Bash fastCGI 在没有给出参数时显示很多信息【英文标题】:Bash fastCGI displays a lot of information when no args are given 【发布时间】:2018-10-09 23:04:44 【问题描述】:重现创建 bash 脚本以通过 nginx 从 FastCGI 运行的步骤,在 URL 栏中不提供任何变量。
Nginx 位置:
location ~ (\.cgi|\.py|\.sh|\.pl|\.lua)$ gzip off; autoindex on; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Bash 脚本的顶部:
# Save the old internal field separator. OIFS="$IFS" # Set the field separator to & and parse the QUERY_STRING at the ampersand. IFS="$IFS&" set $QUERY_STRING Args="$*" IFS="$OIFS"
预期输出:无
实际输出: 请注意,输出已被清理
BASH=/bin/bash BASHOPTS="" BASH_ALIASES="" BASH_ARGC="" BASH_ARGV="" BASH_CMDS="" BASH_LINENO="" BASH_SOURCE="" BASH_VERSINFO="" BASH_VERSION=""` CONTENT_LENGTH="" CONTENT_TYPE="" DAEMON_OPTS="" DIRSTACK="" DOCUMENT_ROOT="" DOCUMENT_URI="" EUID="" FCGI_ROLE="" GATEWAY_INTERFACE="" 组="" 主页="" 主机名="" 主机类型="" HTTPS="" HTTP_ACCEPT="" HTTP_ACCEPT_ENCODING="" HTTP_ACCEPT_LANGUAGE="" HTTP_CONNECTION="" HTTP_COOKIE=CID="" HTTP_HOST="" HTTP_UPGRADE_INSECURE_REQUESTS="" HTTP_USER_AGENT="" IFS="" INVOCATION_ID="" JOURNAL_STREAM="" 朗="" 日志名称="" MACHTYPE="" OIFS="" OPTERR="" OPTIND="" OSTYPE="" 路径="" PIPESTATUS="" PPID="" PS4="" 密码="" QUERY_STRING="" REDIRECT_STATUS="" REMOTE_ADDR="" REMOTE_PORT="" REQUEST_METHOD="" REQUEST_SCHEME="" REQUEST_URI="" SCRIPT_FILENAME="" SCRIPT_NAME="" SERVER_ADDR="" SERVER_NAME="" SERVER_PORT="" SERVER_PROTOCOL="" SERVER_SOFTWARE="" 壳="" SHELLOPTS="" SHLVL="" 术语="" UID="" 用户="" _=""
【问题讨论】:
【参考方案1】:我不确定set $QUERY_STRING
行的意图是什么,但这就是导致输出的原因。如果在没有任何有效选项的情况下调用 bash 中的 set builtin,它将输出环境。
【讨论】:
由于我只从 cgi 传递了一个参数,因此我能够删除该集合并直接调用 $query_string 代替 $args[*]以上是关于Bash fastCGI 在没有给出参数时显示很多信息的主要内容,如果未能解决你的问题,请参考以下文章
为啥jsp页面中传入JavaBean对象里面的中文参数在调试时显示成员变量是乱码?