首页 > 解决方案 > 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 正在对我不知道的文件运行某种过滤器?

标签: apachecgibinaryfiles

解决方案


推荐阅读