Heim > Artikel > Backend-Entwicklung > Nginx PHP-FPM gibt PHP-Fehlerprotokoll aus
nginx ist ein Webserver, daher zeichnet das Zugriffsprotokoll von nginx nur die aufgerufenen Seiten auf und es gibt keine Fehlerprotokollinformationen von PHP.
nginx sendet die PHP-Anfrage zur Verarbeitung an den PHP-FPM-Fastcgi-Prozess. Das Standard-PHP-FPM gibt nur die Fehlermeldung von PHP-FPM aus und PHP kann nicht im Fehlerprotokoll von PHP angezeigt werden. fpm. Der Grund für das Fehlerprotokoll
ist, dass die PHP-FPM-Konfigurationsdatei php-fpm.conf standardmäßig die Fehlerausgabe des Arbeitsprozesses deaktiviert und sie direkt nach /dev/null umleitet, also verwenden wir Das Fehlerprotokoll von Nginx und das Fehlerprotokoll von PHP-FPM können nicht im Fehlerprotokoll von PHP angezeigt werden.
Debugging ist sehr mühsam. Möglichkeiten zur Lösung des Problems, dass PHP-FPM keine PHP-Fehlerprotokolle unter Nginx aufzeichnet:
1. Ändern Sie die Konfiguration in php-fpm.conf und fügen Sie
catch_workers_output = yes error_log = log/error_loghinzu
2. Ändern Sie die Konfiguration in php.ini, wenn nicht, fügen Sie
log_errors = On error_log = "/usr/local/lnmp/php/var/log/error_log" error_reporting=E_ALL&~E_NOTICE
3 hinzu. Starten Sie php-fpm neu.
Sie können Sehen Sie, wann PHP-Ausführungsfehler auftreten. Das Fehlerprotokoll befindet sich in „/usr/local/lnmp/php/var/log/error_log“
Bitte beachten Sie:
1 -fpm.conf Der php_admin_value[error_log]-Parameter in php.ini überschreibt den error_log-Parameter in php.ini
. Stellen Sie daher sicher, dass die endgültige error_log-Datei, die Sie in phpinfo() sehen, über Schreibberechtigungen verfügt und den php_admin_value[error_log] nicht festlegt ] Parameter, andernfalls wird das Fehlerprotokoll in das Fehlerprotokoll von php-fpm ausgegeben.
2. Der Speicherort von php.ini kann nicht gefunden werden. Verwenden Sie PHPs phpinfo(), um die Ergebnisse anzuzeigen.
3 So ändern Sie das PHP-Fehlerprotokoll auf der Seite oder dem Bildschirm ausgegeben werden
php.ini ändern
display_errors = off //不显示错误信息(不输出到页面或屏幕上) log_errors = on //记录错误信息(保存到日志文件中) error_reporting = E_ALL //捕获所有错误信息 error_log = //设置日志文件名
Ändern Sie die obige Konfiguration im Programm
ini_set("display_errors",0) ini_set("error_reporting",E_ALL); //这个值好像是个PHP的常量 ini_set("error_log","<日志文件名>") ini_set("log_errors",1);
4. So geben Sie das PHP-Fehlerprotokoll aus in das Nginx-Fehlerprotokoll
Wenn PHP in PHP 5.3.8 und früheren Versionen über FastCGI ausgeführt wird und während des Benutzerzugriffs ein Fehler auftritt, wird dieser zunächst in das Fehlerprotokoll von PHP geschrieben.
Wenn das Fehlerprotokoll von PHP nicht geschrieben werden kann, wird der Fehler angezeigt Der Inhalt wird zurückgegeben. Geben Sie die FastCGI-Schnittstelle an, und Nginx zeichnet ihn dann im Nginx-Fehlerprotokoll auf, nachdem er die Fehlerrückgabe von FastCGI erhalten hat.
In PHP 5.3.9 und späteren Versionen versucht PHP nur, in das PHP-Fehlerprotokoll zu schreiben, nachdem ein Fehler aufgetreten ist Wenn dies fehlschlägt, kehrt es nicht mehr zu FastCGI zurück und das Fehlerprotokoll wird an das Fehlerprotokoll von php-fpm ausgegeben.
Wenn Sie also das PHP-Fehlerprotokoll in das Nginx-Fehlerprotokoll ausgeben möchten, müssen Sie eine Version vor PHP5.3.8 verwenden, und das Fehlerprotokoll von PHP in der Konfigurationsdatei kann vom PHP-Worker-Prozess nicht geschrieben werden.
Weitere PHP-bezogene Kenntnisse finden Sie auf der PHP-Chinese-Website!
Das obige ist der detaillierte Inhalt vonNginx PHP-FPM gibt PHP-Fehlerprotokoll aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!