PHPが、'--with-zlib' でコンパイルされていて、
デフォルトの設定が、
output_handler | no value |
zlib.output_compression | Off |
zlib.output_compression_level | -1 |
zlib.output_handler | no value |
となっている時、
.htaccessに、
php_value output_handler mb_output_handler
php_flag zlib.output_compression On
と記述して、.htaccessと同一ディレクトリ以下のファイルにアクセスすると、
サーバーからの応答ヘッダーが、
HTTP/0.9 200 OK
となり、実際には0バイトのデータが送信されてくる。
Google Chrome だと、
http://***.***.***/ のウェブページは一時的に停止しているか、新しい http://***.***.***/ に移動した可能性があります。
エラーの詳細
元のエラー メッセージは次のとおりです。
エラー 324 (net::ERR_EMPTY_RESPONSE): 不明なエラーです。
とエラーを表示する。
ところが、.htaccess の記述の順番を逆に、つまり、
php_flag zlib.output_compression On
php_value output_handler mb_output_handler
とすると、問題なくウェブページは表示される。
この時は、HTTP/1.1 200 OK になっている。
zlib.output_compression On とするなら、
output_handler mb_output_handler ではなく、
zlib.output_handler mb_output_handler とした方がいいだろう。
サーバーから送信されるファイルサイズを調べてみると、
デフォルト
53385バイト
php_flag zlib.output_compression On
php_value output_handler mb_output_handler
9825バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
9497バイト
php_flag zlib.output_compression On
9834バイト
php_value output_handler mb_output_handler
53162バイト
php_value zlib.output_handler mb_output_handler
53387バイト
となった。
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level -1
9496バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 0
53198バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 1
10905バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 2
10565バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 3
10339バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 4
9907バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 5
9657バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 6
9495バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 7
9360バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 8
9325バイト
php_flag zlib.output_compression On
php_value zlib.output_handler mb_output_handler
php_value zlib.output_compression_level 9
9326バイト
サイズはApacheのアクセスログから拾った。
リロードを繰り返しながら見ていると、1バイト前後は数字が変化するようだ。
今回のテストでは、zlib.output_compression_levelが、8と9は違いがないように見える。
-1、つまり指定せずサーバーにおまかせの時は、レベル6にしているようだ。
圧縮比
デフォルト 100.00%
-1 17.79%
0 99.65%
1 20.43%
2 19.79%
3 19.37%
4 18.56%
5 18.09%
6 17.79%
7 17.53%
8 17.47%
9 17.47%
今回アクセス対象としたのは、phpinfo関数のみを記述したPHPスクリプト。
CentOS 5.5 Apache 2.2.3 PHP 5.1.6 での確認。