4

スクリプトが終了するまですべての cgi 出力をバッファリングする Ubuntu (11.04 および 12.04) の apache2 に問題があります。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 の問題ではありません。bash で記述された同じ cgi スクリプトは、Ubuntu VS centos/rhel でも同じように動作します。

4

3 に答える 3

1

debian/ubuntu (そして明らかに solaris も) apache パッケージのストック構成は、Redhat のように文字セットを指定していません。本当の解決策は、単純に定義することです。

ubuntu では、以下を /etc/apache2/httpd.conf に追加します。

AddDefaultCharset UTF-8

これがないと、ブラウザは cgi スクリプトの出力をキャッシュします。

于 2013-01-14T21:54:45.213 に答える
1

Solaris 10 でも同様の問題が発生しましたが、これは実際には apache の問題ではなく、Web ブラウザ (firefox 15.0.1) の問題であることがわかりました。(私はtelnet webserver 80プレーンな HTML でこれを確認できました。応答は、出力が実際にバッファリングされていないことを示しました)

Content-Type メタタグを含むヘッダーも出力することで、Firefox でこれを解決できます。

print<<'_EOF_';
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
_EOF_

ただし、エクスプローラーは、ページをレンダリングする前にすべてのデータを待機しているようですが、他のブラウザーは利用できません。

于 2012-10-18T15:10:57.750 に答える