2012-12-11 22 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机制,但由于安全问题,我建议不要这样做。

感谢所有试图帮助的人。