apache - Apache 不会运行二进制 cgi
问题描述
我已成功运行 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。从 shell 运行时二进制文件的输出是:
Content-type: text/html
SHELL=/bin/bash
WINDOWID=...
列出所有环境变量。该文件的权限是-rwxr-xr-x,因此无论谁运行它都应该是可执行的。文件扩展名是.cgi,但这甚至不应该是相关的,因为它在标有ExecCGI的目录中,对吧?
有什么我想念的吗?似乎 Apache 正在对我不知道的文件运行某种过滤器?