ModPerl :: Registry - 无法运行CGI Perl脚本

问题描述:

我在Apache 2.4.7和Ubuntu 14.04下。ModPerl :: Registry - 无法运行CGI Perl脚本

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

#!/usr/bin/perl 

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

这是我的虚拟主机配置:

<VirtualHost 127.0.0.1:80> 
     ServerAdmin [email protected] 
     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)

任何想法?

谢谢

+0

您是否检查过错误日志? – 2014-09-05 13:23:05

+0

是的,在error.log中没有任何异常。这是在access.log:127.0.0.1 - - [05/Sep/2014:14:58:06 +0200]“GET /fred.pl HTTP/1.1”200 249“ - ”“Mozilla/5.0(X11; Ubuntu; Linux x86_64; rv:32.0)Gecko/20100101 Firefox/32.0“ – 2014-09-05 13:26:22

+1

如果我说curl http://localhost/fred.pl有效吗? – 2014-09-05 14:47:41

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

如果它是正确的文件,那么你的配置指令有问题。没有看到整个文件就很难调试。你可以尝试从一个非常简单的配置部分开始,比如一个here

我可能会关闭cgid,直到你得到这个工作以及。

+0

好的,谢谢我会尝试。 – 2014-09-06 16:11:30

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

所以以下是正确的:

PerlResponseHandler ModPerl::Registry 

并没有加载mod_perl.so?当您使用Ubuntu时,请键入:

sudo a2enmod perl 

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

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

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