Joomla!の推奨に従いPHPのOutput Bufferingをoffに変更しました。
Summary
- Joomla!はPHPの[output_buffering]の設定を無効にするよう推奨しています
- 当サーバーへのJoomla! 5.3.1インストール完了時も、その旨のメッセージを確認しておりました

- インストール当時、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
- Akeeba | Support | Akeeba Backup for Joomla! | Output Buffering
Actually, Joomla! always uses output buffering, except when it only needs to issue a redirection. Therefore you should turn it off so as not to have any conflicts with Joomla!.
実は、Joomla! はリダイレクトを発行する必要がある場合を除き、常に出力バッファリングを使用します。そのため、Joomla! との競合を避けるため、出力バッファリングをオフにする必要があります。(Google翻訳)Akeeba | Support | Akeeba Backup for Joomla! | Output Buffering ansower by Akeeba Lead Developer and Director - StackExchange | Joomla | Questions | Why does Joomla (or Akeeba) recommend that Output buffering is disabled?
- 上記サイトを引用し、元の文章の「行間を読んで」同様の質問に回答しております
- ただ、回答氏は、「オンでもオフでもどちらでも問題はない」旨の文章で締めくくっています
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
