1

我试图让 cgi 脚本在 SciLinux 6 - x86_64 上使用干净的 httpd-2.4.6 构建。

我的 httpd.conf 文件: http: //pastebin.com/P0CKYfqU

这基本上是已安装的 - 进行了一些编辑。

我有:

ScriptAlias /cgi-bin/ "/var/tmp/apps/cgi-bin/"

在 httpd.conf 文件中。

我使用以下配置命令构建了 httpd:

./configure --prefix=/var/tmp/apps --with-apr=/var/tmp/apps/bin/apr-1-config --with-apr-util=/var/tmp/apps/bin/apu-1-config --with-pcre=/var/tmp/apps/bin/pcre-config --enable-cgi

我对 /var/tmp/apps/cgi-bin/printenv 做了以下操作

  1. 编辑了#!线
  2. 完成 chmod a+rx

该命令从命令行工作。

但是,当我转到 localhost:8001/cgi-bin/printenv 时,我只看到脚本本身 - 而不是脚本的输出。

我确定我一定缺少一个configure选项或httpd.conf指令。

4

1 回答 1

1

事实证明,在 httpd-2.4.6 中,mod_cgi 模块默认没有构建或启用。

这是一个有效的构建配方:

使用配置选项构建 httpd:

configure \
  --prefix=$TOP \
  --with-apr=$TOP/bin/apr-1-config \
  --with-apr-util=$TOP/bin/apu-1-config \
  --with-pcre=$TOP/bin/pcre-config \
  --enable-modules=all \
  --enable-proxy \
  --enable-proxy-http \
  --disable-userdir \
  --enable-cgi

然后在 httpd.conf 文件中确保 mod_cgi.so 模块已加载:

LoadModule cgi_module modules/mod_cgi.so

要使printenvcgi 脚本正常工作,请将ExecCGI选项添加到 /cgi-bin/ 目录的选项中:

 <Directory "/var/tmp/apps/cgi-bin">
     AllowOverride None
-    Options None
+    Options +ExecCGI
     Require all granted
 </Directory>
于 2013-08-05T15:41:31.060 回答