0

我在 Apache 2.4.7 和 Ubuntu 14.04 下。

我正在尝试在下面运行以下基本 perl 脚本(/home/fred/workspace/portfolio/cgi/fred.pl),ModPerl::Registry但它不会执行(浏览器将其视为要下载的文件,而不是 perl 脚本)

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "Hi Fred !";

这是我的虚拟主机配置:

<VirtualHost 127.0.0.1:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/fred/workspace/portfolio/html

AddHandler perl-script .cgi .pl
PerlModule ModPerl::Registry
Alias / /home/fred/workspace/portfolio/cgi/
<Location />
        SetHandler perl-script
        PerlHandler ModPerl::Registry
        Require all granted
        Options +ExecCGI
</Location>

我以前跑过

sudo a2enmod cgi

这实际上启用了 cgid(我的 apache 是线程的),很好。

当我输入 127.0.0.1/fred.pl 时,没有执行(fred.pl 拥有权利 777)

任何想法 ?

谢谢

4

2 回答 2

0

首先,PerlHandler处理程序是 mod_perl1 指令。mod_perl2 有PerlResponseHandler处理程序替代。

所以以下是正确的:

PerlResponseHandler ModPerl::Registry

你加载 mod_perl.so 了吗?当您使用 Ubuntu 时,请输入:

sudo a2enmod perl

或编写合适LoadModule的行并重新启动服务器。

也许,还有其他问题。但是我没有足够的信息。

最后我建议 mod_perl2现在(2014 年 12 月)不正式支持 Apache 2.4 。

于 2014-12-20T17:48:31.033 回答
0

我要检查的第一件事是你有正确的 apache 配置文件。(简单的检查方法:输入语法错误,然后在重新启动服务器时查看它是否抱怨。)

如果它是正确的文件,那么您的配置指令有问题。在不查看整个文件的情况下很难调试它们。您可以尝试从一个非常简单的配置部分开始,例如此处的配置部分。

我可能会关闭 cgid,直到你也能正常工作。

于 2014-09-05T17:18:50.050 回答