【问题标题】:MacOS+apache, CGI scripts give error 304MacOS+apache,CGI 脚本给出错误 304
【发布时间】:2016-09-12 15:14:46
【问题描述】:

我正在尝试帮助一位同事在他的 mac 上进行测试设置,以便他可以运行 CGI 脚本。我是一个 linux 人,他不是服务器人,所以我们之间很难让最基本的设置正常工作。以下是我们迄今为止所做的:

安装/启用 apache:

sudo apachectl start

编辑文件/etc/apache2/httpd.conf 并取消注释此行:

#AddHandler cgi-script .cgi

在同一文件中,编辑以Options 开头的行并将+ExecCGI 添加到选项列表中。

/Library/WebServer/CGI-Executables 中安装示例 perl CGI 脚本 test.cgi 并使其成为全球可执行文件。源代码:

#!/opt/local/bin/perl
print "Content-Type: text/html\n\n";
print "<html> <head>\n";
print "<title>Hello, world!</title>";
print "</head>\n";
print "<body>\n";
print "<h1>Hello, world!</h1>\n";
print "</body> </html>\n";

当我们访问 URLhttp://localhost/cgi-bin/test.cgi 时,结果是 http 错误代码 304,意思是“未修改”。这对我来说没有多大意义。它通常似乎与缓存有关,这似乎与我们的情况无关。

apache 错误日志中没有显示任何内容。我们可以看出 apache 正在寻找脚本,因为在我们添加 +ExecCGI 选项之前,浏览器会显示脚本的源代码。我们尝试检查权限问题,确保所有内容都是世界可读和可执行的:

ls -ld /Library/WebServer/CGI-Executables
drwxr-xr-x  7 root  wheel  238 Sep  2 13:58 /Library/WebServer/CGI-Executables
ls -l /Library/WebServer/CGI-Executables/test.cgi 
-rwxr-xr-x  1 root  wheel  343 Sep  2 13:58 /Library/WebServer/CGI-Executables/test.cgi

脚本的所有者和组与脚本所在目录的所有者和组相同,这似乎是合理的。

任何人都可以就可能出现的问题以及如何解决问题提供任何建议吗?

【问题讨论】:

  • 你能从 shell 调用/Library/WebServer/CGI-Executables/test.cgi(像那样)吗?如果向 URL 添加 GET 参数会发生什么,例如。 http://localhost/cgi-bin/test.cgi?test ?
  • 你能从一些命令行客户端发布完整的逐字响应头吗?

标签: macos apache cgi


【解决方案1】:

我认为您需要将 Options ExecCGI 添加到 /etc/apache2/httpd.conf - 将其添加到目录特定节

<Directory "/Library/WebServer/CGI-Executables">
  Options ExecCGI
  AddHandler cgi-script .cgi
</Directory>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 2014-09-12
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2011-01-30
    相关资源
    最近更新 更多