Notice: ob_end_flush(): failed to delete and flush buffer. No buffer to delete or flush inの対応

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

Noticeなので特に対応はしなくても問題はないのですが気になるという方のためのカスタマイズ。ob_end_flush()を使用する際には対象となるデータの存在確認を行うことでNotice表示の対応が行なえます。

削除・フラッシュするバッファがないことが原因

// 出力のバッファがあるかを確かめてから使う(中身が空のバッファも閉じる)
if ( ob_get_level() > 0 ) {
    ob_end_flush();
}

ob_get_length() は、バッファがあっても中身が空なら 0 を返すので、空のバッファが閉じられずに残ります。バッファがあるかどうかは ob_get_level() で確かめます。ただし、ほかのプラグインやサーバーの設定(output_buffering)が開いたバッファも数えるので、ob_start() と ob_end_flush() は同じ処理の中で組にして使うのがいちばん確実です。

ログの確認について

関連機能

  1. WordPress 6.7 アップデートしたらWelcart プラグインの動作がおかしくなった

  2. Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘xxx̵…

  3. 短い開きタグのせいで、作業環境だけ Parse error になる:short_open_tag の違いと直し方

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP