はじめに
対象読者
- PowerCMS X ユーザー
- 以下のエラーに困っている人
対応したいエラー
- pt-check.php 実行時に以下のエラーが発生する
システム出力バッファをフラッシュ(flush())することができませんでした。
- このエラーが起きていると、フロントに対していつまでも結果が返ってこないままで固まってしまうということが起きうる
動作確認環境
- Ubuntu 20.04
- PHP 7.4 + PHP-FPM 7.4
- nginx
- PowerCMS X 2.20
やること
nginx の設定書き換え
編集内容
-
location ~ \.php$
ディレクティブの中にfastcgi_buffering off;
を追記-
fastcgi_buffers 8 128k;
fastcgi_buffer_size 256k;
等の記述があれば削除
-
記述サンプル
# 前略
location ~ \.php$ {
fastcgi_buffering off;
fastcgi_read_timeout 300;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 後略
参考
結果
- エラー文が表示されなくなればよし
apache の場合……
- オマケです。apache の場合は公式ドキュメントに記載があります
- 以下のように記述してあげればよいようです
- php-fpm の sock の path などは各自環境にて
<Proxy unix:/run/php-fpm/www.sock|fcgi://localhost>
ProxySet flushpackets=on flushwait=20
</Proxy>
おわりに
感想
- PowerCMS X 2.16 までは発生していなかったので 2.20 へ ver.up するにあたっての現象ですかね。ひとまずフロントに対しては処理した旨を返し、あとはバックエンド側で処理を続けておくというかたちになっているようです
- この場合、バックエンド側でエラーが発生したらログが出力されるはずですが、そのエラーログを検知するしくみを別途用意しておかないとならない……?🤔