Output Buffering in Joomla!

Joomla!の推奨に従いPHPのOutput Bufferingをoffに変更しました。

 Summary

  • Joomla!はPHPの[output_buffering]の設定を無効にするよう推奨しています
  • 当サーバーへのJoomla! 5.3.1インストール完了時も、その旨のメッセージを確認しておりました
    2025 10 17 09 48 25 01
  • インストール当時、Web情報をあたったところ、「どうやら無効でいいらしい」と結論付けたのですが、理由がいまいちわからなかったため、有効のまま無効への変更を保留としていました
  • Joomla! 5.4.0へアップデートするにあたり、事前チェックで再びこのPHPのoutput_bufferingの設定が推奨値ではないと突き付けられたため、再調査の末、無効とすることにしました

PHP output_buffering

Function

  • PHPのドキュメントからoutput_bufferingの機能を引用します
出力バッファリングとは、ブラウザ(Web の場合) や シェル(コマンドラインの場合) に出力をフラッシュ(送信して破棄)する前に、 バッファリング(一時的に保存) することです。 出力バッファリングが有効な間は、スクリプトから出力は送信されず、 代わりに内部バッファに保存されます。PHP | 出力バッファリング

Advantages and disadvantages

  • 出力バッファリング有効・無効時のメリットとデメリットをGoogle AIにまとめてもらいました
output_buffering 有効時
  • メリット
    • 応答のパフォーマンス向上
    • HTTPヘッダーとボディの送信順序を制御が可能に
  • デメリット: メモリ消費の増加や、スクリプトの実行が終了するまで出力されないことによるデバッグの複雑化
output_buffering 無効時
  • メリット
    • メモリ消費を抑えられる
    • PHPスクリプトから出力がすぐに送信されるため、リアルタイムな表示が可能
  • デメリット
    • バッファリングがないため、バッファリングの恩恵を受けられない
    • エラーハンドリングが難しくなったり、バッファリング機能による最適化が失われたりする

Reference

 output_buffering in Joomla!

  • わたくしは次の参照情報をもとに、Joomla!がPHPの設定に関わらず元々出力バッファリングを使用しているので、重複を避けるためにPHPの出力バッファリング設定の無効を推奨している、との結論に至りました
    • ただし、いずれもJoomla!の公式説明ではありません(幾度も検索を繰り返しましたがJoomla!の公式ドキュメントを探し出すことができませんでした)
    • ただ、プログラミングに門外漢のわたくしでも、なんとなく納得がいく説明ではあります
    • この情報によれば、PHPの出力バッファリングの機能がどうこうという問題ではなく、つまり出力バッファリングのメリットやデメリットが焦点ではなく、Joomla!の仕様が理由による「推奨」だと推察されます

Reference

Configuration of output buffering in PHP

  • 上記のとおり、Joomla!がoutput bufferingの無効を推奨していることの理由を推察できたので、無効に変更することとしました
# php.iniをnanoで編集
$ sudo nano /etc/php.ini 

# output_bufferingを無効に変更
 226 output_buffering = 4096
                         ↓
 226 output_buffering = off 

# php-fpm再起動
$ sudo systemctl restart php-fpm
  • Joomla! Updateの事前チェックでOutput Bufferingが推奨どおり、offと認識されています
    2025 10 17 09 48 25 02