我正在使用以下代码来测试向浏览器输出致命错误:
use CGI;
use CGI::Carp qw(fatalsToBrowser);
die "test";
我希望在浏览器中看到一些错误,但没有,我只是得到一个常规的500响应。我忘了我为远程请求打开了自定义错误页面,现在我得到了Script failed to send data.
。
此外:
> perl -w index.pl
Status: 500
Content-type: text/html
<h1>Software error:</h1>
<pre>test at index.pl line 4.</pre>
<p>
For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.
</p>
[Mon Feb 8 18:29:52 2010] index.pl: test at index.pl line 4.
答案 0 :(得分:4)
在任何事情之前尝试打印几行。这表示HTTP标头的末尾是'CGI standard'所说的服务器。或者您也可以使用以下内容:(从Carp man page复制):
use CGI::Carp qw(set_die_handler);
BEGIN {
sub handle_errors {
my $msg = shift;
print "content-type: text/html\n\n";
print "<h1>Oh gosh</h1>";
print "<p>Got an error: $msg</p>";
}
set_die_handler(\&handle_errors);
}
如果这不起作用,还有一些技巧:
#!perl
BEGIN { $| = 1; print "\n\n" }
open STDERR, ">&STDOUT";
..还有一些技巧in this Perl Journal article。