FastCGIはPHPエラーを適切に記録したくありません。まあ、それは完全には真実ではありません。警告のような他のものはログに記録しません。Nginx + FastCGI + PHP(php-fpm)がログに記録されないエラー/警告
悪名高いFastCGI - > Nginxログのバグは必ずしも問題ではありません。 php-fpmからのエラーと警告はNginxに直接送られますが、もしそれらがキャッチされていない場合に限ります。つまり、set_error_handler
が正常にエラーをインターセプトすると、ログエントリは追加されません。つまり、解析エラーを見ることができますが、それはそれです。
php-fpmはちょっとしたハックなしでPHPエラーを単独でログに記録しません(nginxとは別に)。私は明らかに、error_logにパスを変更し
php_admin_value[error_log] = /mnt/log/php-fpm/default.log
php_admin_flag[log_errors] = on
:PHP-FPMのインスタンス設定ファイルは、デフォルトで次の2行が含まれています。私はそれが実際には何をログに記録するために取得するために次の行を追加する必要がありました:
php_admin_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICT
バージョンノート:私はPHP 5.3.27を使用しているようE_STRICTの一部は、不要ですが、私はいくつかの5.4へのアップグレードを計画ポイント。この行では、エラーとエラーのみを/mnt/log/php-fpm/default.log
に記録します。これで、error_reporting
はphp.iniで設定したのと同じ値に設定されるため、ここでは明らかに何かが間違っています。さらに、キャッチされたエラーはログに記録されません。この動作はnginxログと同じです。代わりに数値(22527)を使ってみましたが、まだ運がありません。
エントリーがどのログファイルで終わるか(nginxとphp-fpm)は気にしませんが、どこかでログに記録するにはキャッチしたエラーが必要です。私は自分のエラーハンドラと例外ハンドラを注入することに頼ることができますが、これはちょっとハッキリしているので、むしろそれを避けたいと思います。
私は、Apacheは、この問題を持っていなかったことを想起における狂気のですか? – Zenexer