我在 64 位 Windows Server 2008 标准版上运行 Apache 2.2,并安装有 ActivePerl 5.8.9。我的错误日志中充满了如下的空白错误消息:
[2010 年 3 月 31 日星期三 14:08:31] [错误] [客户端 10.6.1.164]
[2010 年 3 月 31 日星期三 14:10:32] [错误] [客户端 10.6.1.89]
[2010 年 3 月 31 日星期三 14:13:20] [错误] [客户端 10.6.1.131]
通过查看访问日志,我可以发现它发生在我们的客户端机器向一个非常简单的 Perl 脚本发出 GET 时。
#!perl.exe
use strict;
no warnings;
$|=1;
use CGI::Carp('fatalsToBrowser');
use CGI qw(:standard);
print header;
my $CRLF = "\r\n<br>";
my $Port = '10116';
print "Success!${CRLF}PollInterval=5${CRLF}LMProMode${CRLF}Version=7${CRLF}ConnectionPort=$Port";
exit;
奇怪的是,似乎每次对此 Perl 脚本执行 GET 操作时都不会插入此错误消息。什么原因导致此错误消息出现在 Apache 错误日志中?
答案1
在黑暗中拍摄,但默认情况下,apache 会将任何写入 stderr 的内容重定向到 error.log 文件,因此如果您的脚本正在生成任何 stderr 输出(空格、换行符),这可能会体现出来。