我如何让 apache 运行 cgi 而不是显示文本?

我如何让 apache 运行 cgi 而不是显示文本?

我正在尝试在 ubuntu 11.04 上安装 bugzilla 4

我已将以下内容添加到我的 httpd.conf

<Directory “/var/www/dev.spincentre/bugzilla”>
   AddHandler cgi-script .cgi
   Options +Indexes +ExecCGI
   DirectoryIndex index.cgi
   AllowOverride Limit
</Directory>

但是当我访问 URL 时,apache 会显示 index.cgi 的文本而不是执行脚本。有什么办法可以修复它吗?

答案1

您是否加载了 mod_cgi 模块?您可以查看目录 /etc/apache2/mods-enabled/ 是否有符号链接cgi.load。如果没有这样的符号链接,您可以通过运行以下命令来创建它

sudo a2enmod cgi

然后重新启动 Apache:

sudo service apache2 restart

您可以运行man a2enmod看看a2enmod会发生什么。

答案2

在安装 Apache 2.4 时,我遇到了许多问题需要解决,并且还遇到了同样的问题,即显示文本而不是运行 cgi。解决方案与上面的解决方案不同,上面的解决方案是针对 Apache 2.2 的解决方案

首先,您需要下载 2.4 gz 文件并解压。如果您尝试编译,它会抱怨未找到 APR,因为它不再包含在内。您需要从 Apache 下载 apr 和 apr-util 文件,并将它们解压到您正在编译 Apache 的目录中,并将其解压到名为 的子目录中srclib,因此您的路径将是./httpd/srclib/apr./httpd/srclib/apr-util。您还必须从目录名称中删除所有版本号。

cd到你的/path/httpd目录并编译

$ ./configure --with-included-apr

您的配置将默认为PREFIX=/usr/local/apache2

$ make

$ make install

$ vi PREFIX/conf/httpd.conf

你需要编辑你的httpd.conf文件来运行你的 cgi

就我而言,我做了以下事情:

改成Listen 80Listen 127.0.0.1:80

激活该行:

LoadModule cgid_module modules/mod_cgid.so

将 SeverName 更改为:

ServerName 127.0.0.1:80

更改路径DocumentRoot<Directory>适合我的系统

改变了路径ScriptAlias

启用了线路Scriptsock cgisock

<Directory>更改了之后的路径ScriptAlias以适合我的系统

启用了线路AddHandler cgi-script .cgi

保存更改并启动 Apache:

$ /usr/local/apache2/bin/apachectl -k start

希望这能帮助任何正在努力解决这个问题的人;)

答案3

如果你的perl模块成功运行了apache2,但是当你打开页面http://localhost/perl/mysite/时不是显示你的文件而是执行脚本,你只需要在.htaccess或者Apache 配置文件, 那是 :

DirectoryIndex: index.pl index.html index.php

相关内容