Fehler in PHP protokollieren

Olorunfemi Akinlua 15 Februar 2024
  1. Verwenden Sie ini_set(), um die PHP-Fehlerprotokollierung zu aktivieren
  2. Verwenden Sie error_log(), um Fehler in PHP zu protokollieren
  3. Verwenden Sie error_reporting(), um Fehler in PHP im Browser zu protokollieren
Fehler in PHP 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.

Anzeige ist eingeschaltet

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.

  1. So deaktivieren Sie alle Fehlerberichte in Ihrem PHP-Codebereich.

    error_reporting(0);
    
  2. Um einfache Ausführungsfehler zu melden (schwerwiegende Laufzeitfehler, Laufzeitwarnungen und Parsing-Fehler bei der Kompilierung).

    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    
  3. Um nicht initialisierte Variablen zu melden oder Rechtschreibfehler bei Variablennamen abzufangen (Laufzeitbenachrichtigungen).

    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    
  4. Um alle Fehler außer Laufzeitbenachrichtigungen zu melden.

    error_reporting(E_ALL & ~E_NOTICE);
    
  5. Um alle Arten von PHP-Fehlern zu melden.

    error_reporting(E_ALL);
    error_reporting(-1);
    ini_set('error_reporting', E_ALL);
    
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

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

Verwandter Artikel - PHP Error