Perl ubuntu apache2 cgi输出缓冲

Perl ubuntu apache2 cgi输出缓冲,perl,apache,ubuntu,buffering,Perl,Apache,Ubuntu,Buffering,我在Ubuntu(11.04和12.04)上的apache2缓冲所有cgi输出时遇到问题,直到脚本终止。如果我在Centos/rhel 6.2 apache2上运行相同的脚本,它将正常运行 #!/usr/bin/perl $|=1; print "Content-type: text/html\r\n\r\n"; print "hi.."; sleep 1; print "hi.."; sleep 1; print "hi.."; sleep 1; 我已验证mod_deflate已禁用 而

我在Ubuntu(11.04和12.04)上的apache2缓冲所有cgi输出时遇到问题,直到脚本终止。如果我在Centos/rhel 6.2 apache2上运行相同的脚本,它将正常运行

#!/usr/bin/perl

$|=1;
print "Content-type: text/html\r\n\r\n";

print "hi..";
sleep 1;
print "hi..";
sleep 1;
print "hi..";
sleep 1;
我已验证mod_deflate已禁用


而且,这不仅仅是perl的问题,同样的cgi脚本在Ubuntu和centos/rhel上的表现也一样。

我在Solaris 10上遇到了类似的问题,但我发现,这实际上不是apache的问题,而是web浏览器(firefox 15.0.1)的问题。 (我可以用telnet-webserver 80验证这一点,然后说纯HTML,结果显示输出确实没有缓冲)

对于firefox,我还可以通过打印带有内容类型元标记的标题来解决这个问题:

print<<'_EOF_';
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
_EOF_
printdebian/ubuntu(以及solaris)apache软件包库存配置没有像Redhat那样指定字符集。真正的解决办法是简单地定义它

在ubuntu上,将以下内容添加到/etc/apache2/httpd.conf

AddDefaultCharset UTF-8


输出后,浏览器缓存cgi脚本的输出

对我来说,禁用放气模块有助于:

sudo a2dismod deflate

apache运行脚本时会发生什么?脚本完成后,所有内容都会打印出来。就像关闭了缓冲一样。谢谢,在我将Content-type语句更改为:print“Content-type:text/html;charset=iso-8859-1\r\n\r\n”之后;成功了。同时使用firefox和chrome。非常感谢!几天来我一直在寻找这个答案,但运气不好。不过我仍然有一个问题,这似乎只适用于Firefox和IE,Chrome仍在缓冲输出,而且我尝试运行这样的“nph”脚本,该脚本的输出仍在缓冲。你知道是什么引起的吗?