【发布时间】:2017-04-27 20:11:48
【问题描述】:
我有一些用 C 语言编写的 CGI 代码,这些代码是在 Ubuntu linux 机器上开发的。它工作正常,但我想在旅途中进行一些更改并更新它。以为我会将其设置为使用 Xcode 和 Safari 在我的 Mac 笔记本电脑(macOS 10.12.1)上进行测试。尝试在网上查找有关如何让 apache 识别 CGI 代码的说明,并找到了一些站点,但仍然无法正常工作。
这是我目前所拥有的:
我设置了一个目录 /User/username/Sites 来存储将通过表单调用 CGI 代码的 html 页面。 (其中“用户名”是我的用户名)
我将编译后的 CGI 代码放在 /Library/WebServer/CGI-Executables 中(注意:我也将它们放在 /Users/username/Sites 中以防万一)
-
按照在线说明,在 /etc/apache2/httpd.conf 中我取消了以下几行的注释:
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so LoadModule userdir_module libexec/apache2/mod_userdir.so AddHandler cgi-script .cgi AddType text/html .shtml AddOutputFilter INCLUDES .shtml Include /private/etc/apache2/extra/httpd-userdir.conf Include /private/etc/apache2/extra/httpd-vhosts.conf -
同样按照在线说明,我在 /etc/apache2/users 中创建了名为 username.conf 的以下文件(同样,“用户名”是我的用户名)。
<Directory "/Users/username/Sites/"> AllowOverride All Options Indexes MultiViews FollowSymLinks Require all granted </Directory> 完成上述更改后,我重新启动了 apache 服务器(也尝试完全重新启动计算机,但没有帮助)。
我可以使用http://localhost/~username/foo.html 加载表单页面,但是当我使用 POST 方法将表单提交到代码 foo.cgi 时,它只是将 foo.cgi 吐回给我,然后 safari 将其转储到下载中文件夹。还尝试编写一个简单的 perl 脚本和一个简单的 cgi C 代码来创建一个“hello world”网页并用http://localhost/~username/hello.pl(或.cgi)调用它。这给了我相同的结果,尽管对于 perl 脚本它吐出脚本本身,因为它只是纯文本。
一定有一个步骤我错过了,但一直找不到。任何帮助将不胜感激。谢谢!
直流
【问题讨论】:
标签: apache cgi macos-sierra