Fehler in PHP protokollieren
-
Verwenden Sie
ini_set()
, um die PHP-Fehlerprotokollierung zu aktivieren -
Verwenden Sie
error_log()
, um Fehler in PHP zu protokollieren -
Verwenden Sie
error_reporting()
, um Fehler in PHP im Browser zu protokollieren
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);
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn