ActivePerl不会向浏览器输出致命错误

时间:2010-02-07 20:12:58

标签: perl iis iis-7 activeperl

我正在使用以下代码来测试向浏览器输出致命错误:

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.

1 个答案:

答案 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