Nic*_*ton 12 apache perl suexec
我正在研究一个Perl脚本,它从Apache 2服务器上的服务器端调用.该脚本显示通用的"内部服务器错误"页面,而不是显示实际错误.当我检查Apache错误日志时,我看到以下消息:
unable to include "/foobar/index.pl" in parsed file /home/foouser/domains/foosite.com/public_html/foobar/index.shtml, referer: http://www.foosite.com/foobar/
suexec policy violation: see suexec log for more details, referer: http://www.foosite.com/foobar/
Premature end of script headers: settings.pl, referer: http://www.foosite.com/foobar/
Run Code Online (Sandbox Code Playgroud)
如何让Perl脚本显示错误而不是"内部服务器错误"?
我本来应该问一个单独的问题,因为我已经知道这确实会向浏览器发送错误(感谢brian):
use CGI::Carp qw(fatalsToBrowser);
Run Code Online (Sandbox Code Playgroud)
但是,如果问题出在Apache配置而不是Perl脚本上,那么错误将不会发送到浏览器,因为没有解释Perl代码.在这种情况下,由于这一行,我们可以告诉我遇到Apache错误(而不是Perl错误):
suexec policy violation: see suexec log for more details
Run Code Online (Sandbox Code Playgroud)
当Apache以SUexec模式运行时(这似乎是共享主机通用),就会发生这种情况.我不确定究竟有什么改变导致这个错误,但这就是我想要找到的.
使用CGI ::鲤鱼的fatalsToBrowser
.
use CGI::Carp qw(fatalsToBrowser);
Run Code Online (Sandbox Code Playgroud)
您可能还想查看我的疑难解答Perl CGI脚本.
从错误消息,我猜你不允许从服务器端包含执行CGI脚本.您运行的是哪个版本的Apache?如果它是一个旧的apache,请参阅apache 1.3的suexec文档,或者如果它是一个较新的apache,请参阅apache 2.0的suexec文档.