この記事では、nginx サーバーに PHP エラー ログを出力するための php-fpm の設定方法を紹介します。興味のある方はぜひ参考にしてください。
nginxは単なるWebサーバーであるため、nginxのアクセスログはアクセスされたページのみを記録し、phpは存在しません エラーログ情報。
nginx は php のリクエストを php-fpm fastcgi プロセスに送信して処理します。デフォルトの php-fpm は php-fpm のエラー メッセージのみを出力します。 ログに php のエラーログが表示されません
理由:
php-fpm の設定ファイル php-fpm.conf は、デフォルトでワーカー プロセスのエラー出力をオフにし、/dev/null に直接リダイレクトするように設定されているため、 nginxエラー
php-fpmのログもエラーログもphpのエラーログは見れません。
nginx で php-fpm が php エラー ログを記録しない問題を解決する方法:
1. php-fpm.conf の設定を変更し、存在しない場合は追加します
コードをコピー コード例:
catch_workers_output = yes
error_log = log/error_log
2. php.ini の設定を変更します。そうでない場合は、
コードをコピー コード例:
log_errors = On
error_log = "/usr/local/lnmp/php/var/ log/error_log"
error_reporting=E_ALL&~E_NOTICE
3. php-fpm を再起動します。
PHP がエラーを実行すると、"/usr/local" にエラー ログが表示されます。 /lnmp/php/var/log/error_log"
注意してください:
1. php-fpm.conf の php_admin_value[error_log] パラメータは、php.ini の error_log パラメータをオーバーライドします
したがって、最後に表示される error_log ファイルを確認してください。 phpinfo() には書き込み可能な権限があり、php_admin_value[error_log] パラメータが設定されていない場合、エラー ログは php-fpm のエラー ログに出力されます。
2. php.iniの場所が見つかりません。結果を表示するにはphpのphpinfo()を使用します
コードをコピー コード例:
display_errors = off //エラー情報を表示しない(ページや画面に出力しない)
log_errors = on //エラー情報を記録する(ログファイルに保存)
error_reporting = E_ALL //すべてのエラーメッセージをキャプチャ
error_log = //ログファイル名を設定
コードをコピー コード例:
ini_set("display_errors",0)
ini_set("error_reporting",E_ALL) //この値は PHP 定数のようです
ini_set("error_log","< log ファイル名>")
ini_set("log_errors",1);