2012-12-11 29 views
1

我創建httpd.conf中的以下別名運行:Perl腳本不能從一個別名

alias /aliasedfolder /some/location/on/the/server/folder 
<Location /aliasedfolder> 
    AddHandler cgi-script .pl 
    Options +FollowSymLinks +ExecCGI 
    Order allow,deny 
    Allow from all 
    AllowOverride None 
</Location> 

的問題是,我可以在「aliasedfolder」查看圖像,但我得到一個「文件不不存在「的錯誤,當我在那裏運行一個Perl腳本,例如/aliasedfolder/script.pl。 物理perl腳本存在於「/ some/location/on/the/server /文件夾中」。 我確保腳本擁有755權限。

下面是Perl腳本的內容:

#!/usr/bin/perl 
use CGI qw/:standard/; 
print "Content-type:text/html;\n\n"; 
print "Hello world"; 
1; 

出了什麼問題? 謝謝

+0

您檢查了腳本的權限,但是您沒有提及任何有關它所在的目錄鏈的信息.apache運行的程序需要能夠訪問腳本所在的目錄。不知道這是否是問題。 – ikegami

+0

/some/location/on/the/server/folder/script.pl –

+1

ikegami意味着您需要檢查Apache用戶是否需要具有讀取路徑中所有目錄的權限。 Apache閱讀器可以訪問/ some,/ some/location,/ some/location/on等... –

回答

0

在檢查/ some/location/on/the/server /文件夾的所有權後,我發現所有者是「root」用戶名,而我試圖通過帳戶(域名稱)在Apache上有不同的用戶名,例如domain.com/aliasedfolder/script.pl

suexec機制阻止了它作爲安全功能。因此,我將其中的/ some/location/on/the/server /文件夾和script.pl文件的所有權從「root」更改爲我的帳戶的用戶名和組,現在它正在工作。

這將阻止指向我的服務器的其他域訪問此文件(script.pl),因爲suexec阻止單個文件被多個域(具有不同的用戶名)共享。

我可以完全禁用suexec機制,但由於安全問題,我建議不要這樣做。

感謝所有試圖幫助的人。