web-dev-qa-db-ja.com

注意:ob_end_flush():zlib出力圧縮(1)のバッファの送信に失敗しました

ローカルホストでは問題ありません。しかし、サーバーでコードをテストすると、すべてのページの終わりにこの通知が表示されます。

私のコード:

<?php
ob_start();
include 'view.php';

$data = ob_get_contents();
ob_end_clean();
include 'master.php';
ob_end_flush();  // Problem is this line
13
AliN11

php.iniでzlib.output_compressionをオフにすると解決しました

zlib.output_compression = Off

6
AliN11

WordPressはシャットダウン時に出力バッファーをフラッシュしようとします。既にob_end_flush()を呼び出しているため失敗します。

圧縮をオンにしたまま、フラッシュアクションを単純にアンフックできるはずです。

_remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );
_

ob_end_flush()を手動で呼び出して、zlib圧縮をオンのままにできるようになりました。

20
alexg

特定のプラグインが、クライアントのWPサイトの1つで原因となっていることがわかりました。

この場合、「NextGEN Gallery」プラグインが原因でしたが、奇妙なことに、単にプラグインを非アクティブ化してからアクティブ化すると、問題が解決しました。

この問題を抱えている他の人にとっては、プラグインに直面している疑わしいフロントエンドを探して同じことを試してみる価値があります。犯人プラグインが再アクティブ化されたときに問題が再発する場合は、プラグインの作成者に問題を報告する必要があります。

2
Adambean

関係なく、セキュリティ上の理由から、ライブサイトで常に正面向きのエラーを無効にする必要があります。

Wordpressのエラーを非表示にし、代わりにレビューのためにエラーのログを取得する場合は、wp-config.phpファイルで次のようなことを実行できます。

_// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );

// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );

// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
_

PS:上記のalexgのremove_actionコードを使用する場合は、remove_action('shutdown', 'wp_ob_end_flush_all', 1);をテーマのfunctions.phpファイルに配置する必要があります。

PPS:wp-config.phpファイルでdefine(‘WP_MEMORY_LIMIT’,’1024M’);を使用することもできますが、Wordpressを使用すると、ページへの同時ヒットが多すぎる場合、RAMを使い果たすリスクがあります。

0
Obewan