Heim  >  Artikel  >  Backend-Entwicklung  >  Wie nginx php-fpm das PHP-Fehlerprotokoll ausgibt

Wie nginx php-fpm das PHP-Fehlerprotokoll ausgibt

藏色散人
藏色散人Original
2020-08-13 09:19:152745Durchsuche

Konfigurationsmethode für PHP-FPM-Ausgabefehler: Öffnen Sie zuerst die Datei „php-fpm.conf“. Fügen Sie dann den Inhalt „error_log = log/error_log“ hinzu. Öffnen Sie dann die Datei „php.ini“ und fügen Sie den Inhalt „log_errors =“ hinzu Ein“ ;Endlich neu starten.

Wie nginx php-fpm das PHP-Fehlerprotokoll ausgibt

Empfohlen: „PHP-Video-Tutorial

In diesem Artikel wird erläutert, wie PHP-FPM für die Ausgabe von PHP-Fehlerprotokollen auf dem Nginx-Server konfiguriert wird. Ich hoffe, dass es hilfreich ist an alle geholfen.


Da Nginx nur ein Webserver ist, zeichnet das Zugriffsprotokoll von Nginx nur die aufgerufenen Seiten auf und es gibt kein PHP Fehlerprotokollinformationen.

nginx sendet die PHP-Anfrage zur Verarbeitung an den PHP-FPM-Fastcgi-Prozess Sie können das Fehlerprotokoll von PHP nicht im Protokoll sehen

Grund: Die Konfigurationsdatei php-fpm.conf von
php-fpm deaktiviert standardmäßig die Fehlerausgabe des Arbeitsprozesses und leitet sie direkt nach /dev/null um, daher verwenden wir nginx Fehler Weder das Protokoll noch das Fehlerprotokoll von PHP-FPM können das Fehlerprotokoll von PHP sehen.

Möglichkeiten zur Lösung des Problems, dass php-fpm unter nginx keine PHP-Fehlerprotokolle aufzeichnet:

1. Ändern Sie die Konfiguration in php-fpm.conf und fügen Sie sie hinzu, wenn sie nicht vorhanden ist

catch_workers_output = yes
error_log = log/error_log

2. Ändern Sie die Konfiguration in php.ini und fügen Sie es hinzu, wenn dies nicht der Fall ist

log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE

3. Starten Sie php-fpm neu.
Wenn ein PHP-Ausführungsfehler auftritt, können Sie das Fehlerprotokoll in „/usr/local/lnmp/php/var/log/“ sehen. error_log"

Bitte beachten Sie:
1. php-fpm Der Parameter php_admin_value[error_log] in .conf überschreibt den Parameter error_log in php.ini
Stellen Sie also sicher, dass die endgültige error_log-Datei, die Sie in phpinfo() sehen, über Schreibrechte verfügt und dies auch tut Setzen Sie den Parameter php_admin_value[error_log] nicht, sonst wird das Fehlerprotokoll in das Fehlerprotokoll von php-fpm ausgegeben.

2. Der Speicherort von php.ini kann nicht gefunden werden. Verwenden Sie phpinfo() von PHP, um die Ergebnisse anzuzeigen.

3. So ändern Sie das PHP-Fehlerprotokoll, damit es nicht auf der Seite oder dem Bildschirm ausgegeben wird. PHP ändern .ini

display_errors = off //不显示错误信息(不输出到页面或屏幕上)
log_errors = on //记录错误信息(保存到日志文件中)
error_reporting = E_ALL //捕获所有错误信息
error_log = //设置日志文件名

Programm Ändern Sie die obige Konfiguration

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 Fehlerprotokoll von PHP in das Fehlerprotokoll von Nginx aus

Wenn in PHP 5.3.8 und früheren Versionen ein Fehler auftritt, wenn der Benutzer über PHP zugreift FastCGI, es wird zuerst in das Fehlerprotokoll von PHP geschrieben
Wenn das Fehlerprotokoll von PHP nicht geschrieben werden kann, wird der Fehlerinhalt an die FastCGI-Schnittstelle zurückgegeben, und Nginx zeichnet ihn dann im Fehlerprotokoll von Nginx auf, nachdem er die Fehlerrückgabe von erhalten hat FastCGI
In PHP 5.3.9 und höher In dieser Version versucht PHP nur, in das Fehlerprotokoll von PHP zu schreiben, wenn ein Fehler auftritt. Wenn dies fehlschlägt, kehrt es nicht zu FastCGI zurück und das Fehlerprotokoll wird im Fehlerprotokoll von PHP ausgegeben -fpm.
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 PHP-Fehlerprotokoll in der Konfigurationsdatei kann vom PHP-Worker-Prozess nicht geschrieben werden.

Das obige ist der detaillierte Inhalt vonWie nginx php-fpm das PHP-Fehlerprotokoll ausgibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn