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 / folder”中。
我确定脚本有755许可。
以下是perl脚本的内容:
#!/usr/bin/perl use CGI qw/:standard/; print "Content-type:text/html;\n\n"; print "Hello world"; 1;
什么似乎是问题?
在检查/ some / location / on / the / server /文件夹的所有权后,我发现所有者是“root”用户名,而我试图通过Apache上的帐户(域名)访问文件夹一个不同的用户名,例如domain.com/aliasedfolder/script.pl
suexec机制阻止了这个作为安全function。 所以,我把里面的/ some / location / on / the / server /文件夹和script.pl文件的所有权从“root”改成了我的账户的用户名和组,现在它正在工作。
这将防止指向我的服务器的其他域访问此文件(script.pl),因为suexec阻止单个文件被多个域(具有不同的用户名)共享。
我可以完全禁用suexec机制,但由于安全问题,我build议不要这样做。
感谢所有想要帮助的人。
你有没有尝试过使用一个
<Directory "/some/location/on/the/server/folder" > AddHandler cgi-script .pl .... AllowOverride None </Directory>
你也运行任何安全措施,如suExec或SELinux ,如果你有脚本所需的额外的所有权和扩展的属性调整。