HOWTO · PHP
Fehler in PHP protokollieren
Dieses Tutorial erklärt, wie Sie Fehler in PHP protokollieren und in Ihren Code integrieren.
Das Protokollieren von Fehlern ist unerlässlich, wenn wir Anwendungen entwickeln, einschließlich PHP-Anwendungen. Daher ist es wichtig zu wissen, wie man Fehler in PHP protokolliert, und sich nicht auf print_r() und var_dump() zu verlassen, um zu wissen, wenn etwas schief gelaufen ist.
In diesem Artikel werden alle Funktionen besprochen, die wir verwenden müssen, um die Fehlerprotokollierung in PHP zu aktivieren und damit zu arbeiten.
Verwenden Sie ini_set(), um die PHP-Fehlerprotokollierung zu aktivieren
Öffnen Sie vor allem die Datei php.ini und überprüfen Sie, ob display_errors auf On gesetzt ist, genau wie im Bild unten.
Zusätzlich müssen Sie in der Datei php.ini nach error_reporting-Bedingungen suchen. Wenn Ihre Version PHP 8.1 ist, sehen Sie möglicherweise error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT in Ihrer php.ini-Datei.
Fügen Sie jedoch sicherheitshalber die folgenden Zeilen hinzu.
error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ER… _ERROR
error_reporting = E_ALL & ~E_NOTICE
Damit Sie Fehler ordnungsgemäß protokollieren können, müssen Sie die Funktion ini_set() verwenden, um die Fehlerprotokollierung zu aktivieren. Mit dieser Funktion können wir den Wert einer Konfigurationsoption festlegen, z. B. Fehlerprotokollierungsoptionen.
Wir können die PHP-Fehlerprotokollierung innerhalb unserer Codebasis mit einer Option und einem Wert konfigurieren. Das folgende Code-Snippet zeigt uns die Optionen und die benötigten Werte.
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
Wenn wir Fehler in unseren PHP-Skripten protokollieren müssen, müssen wir sie in dieses Skript aufnehmen. Um das DRY-Prinzip beizubehalten, sollten wir eine PHP-Datei erstellen, die den obigen Code enthält, und ihn in jedem PHP benötigen, das wir benötigen.
require_once('error.php');
Verwenden Sie error_log(), um Fehler in PHP zu protokollieren
Jetzt, da wir unsere PHP-Umgebung so konfiguriert haben, dass die PHP-Fehlerprotokollierung aktiviert ist, können wir die äußerst wichtige Funktion error_log() verwenden.
Mit dieser Funktion reduzieren wir die Verwendung der Funktionen print_r() und var_dump() zum Debuggen (insbesondere in der Produktionsumgebung) und erstellen spezielle Fehlervorlagen, um uns mitzuteilen, dass etwas nicht richtig funktioniert.
Um zu zeigen, wie error_log() funktioniert, können wir die Funktion verwenden, um uns mitzuteilen, dass eine Eingabeoperation zum Lesen einer Datei fehlgeschlagen ist. Im Code-Snippet lesen wir die PHP-Eingabe mit der Funktion file_get_contents, und wenn $data leer ist (was bei einer NOT-Bedingung true setzt), wird die No file read. Fehlermeldung wird protokolliert.
$data = file_get_contents('php://input');
if (!$data) {
error_log("No file read. Check input conditions or values.");
}
Die Ausgabe des Codes, wenn es keine Eingabe für die Funktion file_get_contents() gibt, ist unten.
No file read. Check input conditions or values.
Wie Sie sehen können, nimmt die Funktion error_log() ein message-Argument entgegen. Abgesehen von diesem Argument werden die Argumente message_type, destination und additional_headers benötigt.
Verschiedene Protokolltypen definieren den ganzzahligen Wert, den Sie für die Funktion error_log parsen; Weitere Einzelheiten dazu finden Sie in der PHP-Dokumentation.
Wenn Sie beispielsweise die Fehlermeldung an den PHP-Systemlogger senden möchten, verwenden Sie als Nachrichtentyp 0.
Sie können auch mit dem Nachrichtentyp 3 in einem Dateiziel speichern, wie im folgenden Code-Snippet.
error_log("No file read. Check input conditions or values.", 3, "/my-errors.log");
Verwenden Sie error_reporting(), um Fehler in PHP im Browser zu protokollieren
Neben der Funktion ini_set() können wir einstellen, welche PHP-Fehler gemeldet werden. Dabei hilft uns die Funktion error_reporting().
Erinnern Sie sich an die Fehler-PHP-Datei, die wir erstellt haben, um von jeder PHP-Datei benötigt zu werden, die sie benötigt; Wir können diese Funktion und ihre Parameter dort hinzufügen.
-
So deaktivieren Sie alle Fehlerberichte in Ihrem PHP-Codebereich.
error_reporting(0); -
Um einfache Ausführungsfehler zu melden (schwerwiegende Laufzeitfehler, Laufzeitwarnungen und Parsing-Fehler bei der Kompilierung).
error_reporting(E_ERROR | E_WARNING | E_PARSE); -
Um nicht initialisierte Variablen zu melden oder Rechtschreibfehler bei Variablennamen abzufangen (Laufzeitbenachrichtigungen).
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); -
Um alle Fehler außer Laufzeitbenachrichtigungen zu melden.
error_reporting(E_ALL & ~E_NOTICE); -
Um alle Arten von PHP-Fehlern zu melden.
error_reporting(E_ALL); error_reporting(-1); ini_set('error_reporting', E_ALL);