nginx は Web サーバーですので、nginx のアクセスログはアクセスしたページのみが記録され、php のエラーログ情報は残りません。
nginx は、php のリクエストを php-fpm fastcgi プロセスに送信して処理します。デフォルトの php-fpm は php-fpm のエラー メッセージのみを出力し、php-fpm のエラー ログには php は表示されません。 fpm.errorlog
の理由は、php-fpm 設定ファイル php-fpm.conf がデフォルトでワーカー プロセスのエラー出力をオフにし、/dev/null に直接リダイレクトするように設定されているためです。 phpのエラーログではnginxのエラーログやphp-fpmのエラーログは見られません。
デバッグは非常に苦痛です。 php-fpm が nginx で 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.ini の php_admin_value[error_log] パラメータは、php.ini の error_log パラメータをオーバーライドします。
したがって、phpinfo() で表示される最終的な error_log ファイルに書き込み権限があり、php_admin_value[ error_log]パラメータを指定しない場合、エラーログはphp-fpmのエラーログに出力されます。
2. php.ini の場所が見つかりません。結果を表示するには、php の phpinfo() を使用してください。
3. PHP エラー ログを変更する方法ページまたは画面に出力する
php.iniを修正する
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","<日志文件名>") ini_set("log_errors",1);
4. phpエラーログの出力方法nginx エラー ログへ
PHP 5.3.8 以前のバージョンでは、PHP が FastCGI を介して実行され、ユーザー アクセス中にエラーが発生すると、まず PHP のエラー ログに書き込まれます。
PHP のエラー ログに書き込めない場合は、エラー内容が返されます。FastCGI インターフェイスを指定すると、FastCGI からのエラー戻りを受信した後、nginx がそれを nginx エラーログに記録します。
PHP 5.3.9 以降のバージョンでは、PHP は、エラー内容が返された後にのみ PHP エラーログに書き込もうとします。失敗するとFastCGIに戻れなくなり、php-fpmのエラーログにエラーログが出力されます。
したがって、php のエラーログを nginx エラーログに出力したい場合は、php5.3.8 より前のバージョンを使用する必要があり、設定ファイル内の php の error_log は、php ワーカープロセスによって書き込むことができません。
PHP 関連の知識の詳細については、PHP 中国語 Web サイト をご覧ください。
以上がnginx php-fpm出力phpエラーログの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。