Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cat在bash cgi脚本中似乎不起作用_Bash_Cgi_Cat - Fatal编程技术网

cat在bash cgi脚本中似乎不起作用

cat在bash cgi脚本中似乎不起作用,bash,cgi,cat,Bash,Cgi,Cat,重现此问题的示例: #!/bin/bash echo Content-type: text/html echo echo "<html>" echo "<head>" echo "<title>" echo "Test-A" echo "</title>" echo "</head>" echo "<b

重现此问题的示例:

#!/bin/bash
echo Content-type: text/html
echo
echo "<html>"
echo "<head>"
echo "<title>"
echo "Test-A"
echo "</title>"
echo "</head>"
echo "<body>"
echo "AAA"
cat <<EOS
test A0
EOS
echo "</body>"
echo "</html>"
exit 0
但BBB和CCC都没有出现。这很奇怪:毕竟,
cat
只是写入stdout,应该像
echo
那样收集。其他程序运行正常:如果我执行
ls-l/bin/cat
,我会看到输出,如下所示

-rwxr-x---1号公寓nagios 43744 2019年2月28日/bin/cat

不用说,即使是

cat SOME_FILE
也不会在返回的页面中生成任何可见的输出。 知道猫为什么不在这里工作吗

错误日志中没有错误消息(例如找不到命令)。因此我相信我的脚本不会在stderr上写任何东西。此外,
cat
存在,因为我们不仅可以从
ls
的输出中看到,而且还可以看到
类型-a cat
显示其位置(
bin/cat

此服务器上的bash是GNU bash,版本5.0.3(如
bash--version
所示,但我无法识别
cat
的任何版本,因为
cat--version
也不会产生任何输出

更新:


尝试其他一些命令,我发现,
ruby--version
的输出会显示在返回的网页中,而
uname
的输出不会显示。因此,
cat
不是唯一一个行为奇怪的命令。
uname
也会显示。我看不出它们有什么共同点,但有所不同使用诸如
ls
ruby

等命令时,您的
/bin/cat
上的所有权和权限看起来有点奇怪-请记住,您的CGI脚本以低级
\u www
用户的身份运行。请尝试在脚本顶部显式设置
路径
。祝您好运!路径正常(否则,
类型
将无法正确识别命令)。关于权限的观点很好。我会检查它,是否它们对于
uname
也是错误的,并联系托管公司进行更改。我只是很惊讶,我在日志中没有看到任何错误消息。关于CGI的一些详细信息?可能是交互终端问题,也可能是不正确的输出。@lojza:如果CGI是正如您所怀疑的,我不认为这可以解释我所看到的行为。但是,我在一开始也测试了这方面,通过执行
echo$-
(我没有在我的帖子中包含此信息,因为我认为它与此无关)。此外,我不明白你所说的不正确输出是什么意思;你看到了我的小测试脚本。
cat
使用中没有任何错误。实际上,即使是
cat--version
echo FOO | cat
也没有产生任何输出。
cat SOME_FILE