CGI 程序重定向失败

CGI 程序重定向失败

我正在尝试将命令输出的内容重定向到 CGI 程序中的文件。对我来说问题是输出文件没有被创建。

CGI代码片段如下:

#!/bin/bash

echo "Content-type: text/html"
echo ""

echo "<html>"
echo "<body>"

`mysql -u root -predhat -H  -D mysql -e "select host,db from  db;" > output.txt`

 echo "</body>"
 echo "</html>" 

CGI 脚本是从 HTML 程序调用的。另外,我可以INTO OUTFILEmysql命令一起使用,但我希望输出重定向应该适用于任何命令。

所有权如下:

  #ls -l /var/www/cgi-bin/example.sh
  -rwxr-xr-x 1 root root 839 Apr 11 21:34 /var/www/cgi-bin/example.sh

# ps -ef | grep httpd root 2442 1 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2464 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2465 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2466 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2467 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2468 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd

我该如何解决这个问题?

答案1

首先是这个脚本设置,以便运行您的 Web 服务器(我猜是 Apache)的用户可以执行它?您可以通过查看脚本的权限来检查:

$ ls -l somescript.cgi
-rwxrwxr-x. 1 apache apache 1199 Jan 17 20:47 somescript.cgi

您需要这样的权限,以便任何人都可以运行它,或者如果该脚本由用户拥有apache,那么至少只有所有者可以执行它。

如果是这种情况,那么接下来我将关注命令输出的位置mysql。 Apache 可能无法写入mysql尝试写入文件的位置output。我会将其设置为一个实际的物理位置,如下所示:

mysql -u root -predhat -H  -D mysql -e "select host,db from  db;" \
    > /tmp/output.txt

而且反引号是不必要的,所以你可以把它们去掉。

相关内容