我已经成功运行了Hello World perl cgi脚本,但是无法运行二进制文件(从golang编译)。 Apache只是将其作为下载。我搜寻了互联网以寻找答案,尽管其他人似乎也遇到了类似的问题,但解决方案却行不通。我也没有在日志中收到任何错误消息,所以我不知道为什么它不起作用。
我的httpd.conf的相关行:
<IfModule !mpm_prefork_module>
LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
...
ScriptAlias "/cgi-bin/" "/srv/http/cgi-bin/"
...
<Directory "/srv/http/cgi-bin">
AllowOverride None
Options +ExecCGI
SetHandler cgi-script
Order allow,deny
Allow from all
</Directory>
我在Archlinux上使用Apache 2.4.41。从外壳运行时二进制文件的输出为:
Content-type: text/html
SHELL=/bin/bash
WINDOWID=...
列出所有环境变量。该文件的权限为-rwxr-xr-x,因此无论谁运行它都应可执行。文件扩展名是.cgi,但这根本不相关,因为它在标有ExecCGI的目录中,对吗?
有什么我想念的吗?看来Apache正在对我不知道的文件运行某种过滤器?