2014-09-05 139 views
0

我在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

回答

0

我會檢查的第一件事是你有正確的apache配置文件。 (簡單的方法來檢查:輸入語法錯誤,看看它是否在你重新啓動服務器時發出抱怨。)

如果它是正確的文件,那麼你的配置指令有問題。沒有看到整個文件就很難調試。你可以嘗試從一個非常簡單的配置部分開始,比如一個here

我可能會關閉cgid,直到你得到這個工作以及。

+0

好的,謝謝我會嘗試。 – 2014-09-06 16:11:30

0

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月)。