2017-04-04 9 views
0

私はコンテンツを圧縮するために "ob_gzhandler"関数を使用します。これは私のコードです:なぜob_gzhandlerが機能しないのですか?

<?php 
ob_start("ob_gzhandler"); 
?> 
<html> 
<body> 
<p>This should be a compressed page.</p> 
</body> 
</html> 

圧縮は動作しません。 "検査要素"の はではありません "content-encoding:gzip"フレーズ!

enter image description here

私のシステム情報:

のApache/2.4.23(Win64の)PHP/5.6.25 - Apacheのために定義されたポート:80

答えて

2

PHPのドキュメントは言う、そのob_gzhandlerにはzlibの拡張機能がインストールされている必要がありますので、それが本当であることを確認してください。

if (extension_loaded('zlib')){ 
    echo "zlib installed"; 
} 

インストールされている場合、ob_gzhandlerを使用するとコンテンツが圧縮されます。問題は、応答ヘッダーにHTTPヘッダーContent-Encoding: gzipが表示されないことです。このヘッダは、Webサーバーによって設定されていませんが、あなたはheader()機能により、PHPからそれを設定することができます。

if (extension_loaded('zlib') && !ini_get('zlib.output_compression')){ 
    header('Content-Encoding: gzip'); 
    ob_start('ob_gzhandler'); 
} 

I:あなたは解決策を持っているこれら二つのステップを組み合わせて、だから、

header('Content-Encoding: gzip'); 

.iniの設定もチェックしてください。 zlib.output_compressionOnの場合、すべての出力が圧縮されるため、ob_gzhandlerは冗長です。

このコードは有効ですが、どのようなPHPが使用されるべきではありません。出力の圧縮とヘッダーの設定はウェブサーバーです。関連する回答、configuring .htaccess fileを読んでください。そうすれば、Apacheは圧縮を行い、正しい応答ヘッダーを設定します。ゼロpreoutputを必要ob_start(ob_gzhandler)

+0

してくださいより多くの記述の間でzlib.output_compression_level 、私はまだ理解していない! Tnx – Farshad

+0

@Farshad、私はいくつかの情報を追加しました。それが役に立てば幸い。 – wormi4ok

1

ガッチャ1

<?は、あなたのファイルの非常に最初のバイトでアサートします。)


ガッチャ2

ob_start(ob_gzhandler)ニーズは-1と9

関連する問題