開発中のシステムでエラーメッセージをいちいちログ見て確認するのは大変なので表示させる。
設定できそうな箇所は3つある(nginx.conf,php-fpm.ini,phpのini_set())。
結論
php_flag[display_errors] = on
php_admin_value[error_reporting] = E_ALL // この辺は適宜お好み
して
service php-fpm restart
service nginx restart
- php.iniの記述はphp-fpm.confで上書きされてるから無視でいい
- phpスクリプトからini_setなどで設定Onにできない(E_WARNING)は出る
説明
php.iniの設定
変更しなくていい。
php-fpm.confの設定
php_flag[display_errors] = on
php_admin_value[error_reporting] = E_ALL // この辺は適宜お好み
あれこれ
php.iniで
とすると表示はオフになったので php-fpm.confだけ編集すれば良いと思う。display_errors = On
とした時にphp-fpm.confで
php_flag[display_errors] = off
また
の時にPHPスクリプト内でphp_flag[display_errors] = off
error_reporting(E_ALL);
ini_set('display_errors', 1);
のように記述しても(E_PARSE|E_ERROR)等は表示されない。nginxでエラーがキャッチされてしまっているからだと思う。
でもE_WARNINGについては正しく表示された。php_flag[display_errors] = off
fastcgi_intercept_errors
これは
の時にしか役に立たない模様php_flag[display_errors] = off
以上
対応環境
nginx/1.19.4
PHP 7.3.26