【问题标题】:/cgi-bin/printenv - doesn't execute - outputs the script itself/cgi-bin/printenv - 不执行 - 输出脚本本身
【发布时间】:2013-08-02 17:34:54
【问题描述】:

我正在尝试让 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 指令。

【问题讨论】:

    标签: apache httpd.conf cgi-bin


    【解决方案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
    

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

     <Directory "/var/tmp/apps/cgi-bin">
         AllowOverride None
    -    Options None
    +    Options +ExecCGI
         Require all granted
     </Directory>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多