So aktivieren Sie die Fehleranzeige in PHP

1. Schneller Weg zur Aktivierung der Fehleranzeige

Wenn Sie an einem Projekt arbeiten, ist es wichtig, Fehler für eine schnelle Behebung anzuzeigen. Verwenden Sie den folgenden Code, um die Fehleranzeige zu aktivieren. Dieser Ansatz eignet sich perfekt für die Entwicklungsumgebung, aber beachten Sie: Die Fehleranzeige auf einem Live-Server aktiviert zu lassen, ist unsicher.

Dieser Code aktiviert:

  • Die Anzeige aller Fehler, Warnungen und Hinweise;
  • Die Anzeige von Fehlern, die während der Startphase von PHP auftreten.
PHP
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Hinweis: Dieser Ansatz zeigt keine Syntaxfehler an (z. B. ein fehlendes Semikolon). Um solche Probleme zu beheben, müssen Sie die Einstellungen in php.ini oder .htaccess anpassen.

2. Aktivierung der Fehleranzeige über php.ini

Wenn trotz der Verwendung von ini_set keine Fehler angezeigt werden, überprüfen Sie die Einstellungen Ihrer php.ini-Datei. Diese Datei ist die Hauptkonfigurationsdatei für PHP. Fügen Sie die folgenden Zeilen hinzu:

PHP.INI
display_errors = on
error_reporting = E_ALL

Um Ihre php.ini-Datei zu finden, verwenden Sie die Funktion phpinfo() in einer PHP-Datei. Suchen Sie im Ergebnis nach der Zeile Loaded Configuration File.

Tipp: Starten Sie den Server neu, nachdem Sie die Änderungen vorgenommen haben, um die neuen Einstellungen zu übernehmen.

3. Aktivierung der Fehleranzeige über .htaccess

Manchmal erlauben Hosting-Anbieter keinen Zugriff auf die php.ini, aber Änderungen über die .htaccess-Datei sind möglich. Fügen Sie dort die folgenden Zeilen hinzu:

.HTACCESS
php_flag display_errors on
php_flag display_startup_errors on

Die .htaccess-Datei sollte sich im Stammverzeichnis Ihrer Website oder im Projektordner befinden. Beachten Sie, dass nicht alle Server diese Direktiven unterstützen.

Hinweis: Wenn die Fehler immer noch nicht angezeigt werden, liegt dies möglicherweise daran, dass die Serverkonfiguration keine Änderungen an php.ini über .htaccess zulässt. Wenden Sie sich in diesem Fall an den Serveradministrator.

4. Konfiguration der Fehlerberichterstattung

Die Funktion error_reporting ermöglicht es Entwicklern, auszuwählen, welche Fehlertypen angezeigt werden sollen. Zum Beispiel:

  • E_ERROR — Kritische Fehler, die das Skript stoppen;
  • E_WARNING — Warnungen, die die Skriptausführung nicht stoppen;
  • E_NOTICE — Hinweise, z. B. die Verwendung nicht deklarierter Variablen;
  • E_ALL — Alle möglichen Fehlertypen und Warnungen.

Beispiel für die Anzeige nur von Warnungen:

PHP
error_reporting(E_WARNING);

Um Hinweise auszublenden, aber andere Fehler anzuzeigen:

PHP
error_reporting(E_ALL & ~E_NOTICE);

Das Symbol & ~ ermöglicht das Ausschließen bestimmter Fehlertypen aus der Anzeige.

5. Fehlerprotokollierung in eine Datei

Auf Live-Servern wird empfohlen, Fehler in ein Protokoll zu schreiben, anstatt sie Benutzern anzuzeigen. Verwenden Sie dazu die Funktion error_log. Sie akzeptiert bis zu vier Parameter:

  1. Fehlermeldung;
  2. Protokollierungstyp (0 — Standardprotokoll, 1 — E-Mail-Versand, 3 — Schreiben in eine Datei);
  3. Dateipfad (für Typ 3);
  4. Zusätzliche Header (optional).

Beispiel für das Schreiben eines Fehlers in eine Datei:

PHP
error_log("Fehler: Datei nicht gefunden", 3, "logs/errors.log");

Stellen Sie sicher, dass der Pfad zur Datei logs/errors.log beschreibbar ist.

Um Fehler per E-Mail zu versenden:

PHP
error_log("Kritischer Fehler!", 1, "admin@example.com");

Wichtig: Damit diese Funktion funktioniert, müssen die SMTP-Parameter in php.ini konfiguriert sein.

6. Deaktivieren der Fehleranzeige

Manchmal ist es erforderlich, die Fehleranzeige vollständig zu deaktivieren (z. B. um Datenlecks in einer Produktionsumgebung zu verhindern). Verwenden Sie dazu den folgenden Code:

PHP
error_reporting(0);
ini_set('display_errors', 0);

Hinweis: Sie können die Fehlerprotokollierung für die Analyse aktiviert lassen, auch wenn die Fehler im Browser nicht angezeigt werden.

7. Überprüfung der PHP-Konfiguration

Manchmal ist es wichtig, die aktuelle PHP-Konfiguration zu überprüfen, einschließlich des Pfads zur geladenen php.ini-Datei. Verwenden Sie dazu die Funktion phpinfo(). Sie zeigt detaillierte Informationen zur aktuellen PHP-Konfiguration an, einschließlich:

  • Der geladenen Konfigurationsdatei (Loaded Configuration File);
  • Installierter Module und deren Versionen;
  • Verfügbarer Direktiven und deren Werte.

Beispiel:

PHP
phpinfo();

Tipp: Lassen Sie diese Datei niemals öffentlich zugänglich auf Ihrem Server, da sie viele sensible Informationen über Ihre Umgebung enthält.

8. Nur kritische Fehler anzeigen

Manchmal ist es erforderlich, nur fatale Fehler anzuzeigen, um weniger wichtige Warnungen oder Hinweise auszublenden. Verwenden Sie den folgenden Code:

PHP
error_reporting(E_ERROR);

Sie können die Parameter auch kombinieren, z. B.:

PHP
error_reporting(E_ERROR | E_PARSE);

In diesem Fall werden nur kritische Fehler und Syntaxfehler angezeigt.

9. Fehlerprotokollierung auf Server-Ebene konfigurieren

Auf Server-Ebene können Sie den Pfad zur Fehlerprotokolldatei angeben. Für Apache verwenden Sie die folgende Direktive:

APACHE
ErrorLog "/var/log/apache2/errors.log"

Für Nginx lautet die entsprechende Direktive:

NGINX
error_log /var/log/nginx/errors.log;

Stellen Sie sicher, dass die Protokolldatei beschreibbar ist. Diese Einstellungen sind besonders nützlich für die Fehlerbehebung auf Server-Ebene.

10. Kritische Fehler per E-Mail benachrichtigen

Wenn Sie kritische Fehler per E-Mail benachrichtigen möchten, verwenden Sie die Funktion error_log mit dem Parameter 1. Beispiel:

PHP
error_log("Kritischer Fehler!", 1, "admin@example.com");

Stellen Sie sicher, dass die SMTP-Parameter in Ihrer php.ini korrekt konfiguriert sind:

  • SMTP — Adresse des SMTP-Servers;
  • smtp_port — SMTP-Port;
  • sendmail_from — Absenderadresse.

Hinweis: Diese Funktion eignet sich nur für kritische Nachrichten und kann zusammen mit der Protokollierung in einer Datei verwendet werden.

11. Fehler mit Ausnahmen behandeln

PHP unterstützt den Umgang mit Ausnahmen, wodurch Sie Fehler in try/catch-Blöcken abfangen und behandeln können. Dies ist nützlich, um Fehler auf Anwendungsebene zu verwalten.

Ein einfaches Beispiel für die Verwendung von Ausnahmen:

PHP
try {
    // Code, der eine Ausnahme auslösen kann
    if (!file_exists("example.txt")) {
        throw new Exception("Datei nicht gefunden");
    }
    echo "Datei gefunden!";
} catch (Exception $e) {
    // Fehler behandeln
    echo "Fehler: " . $e->getMessage();
}

Die Methode throw löst eine Ausnahme aus, und der Block catch fängt sie ab und verarbeitet sie.

Tipp: Verwenden Sie Ausnahmen, um Fehler in der Anwendungslogik zu behandeln, und nicht für Standardfehler, die besser mit error_reporting behandelt werden.

12. Benutzerdefinierte Ausnahmen erstellen

Sie können benutzerdefinierte Ausnahme-Klassen erstellen, um die Fehlerbehandlung in komplexen Projekten besser zu strukturieren. Hier ist ein Beispiel:

PHP
class MyCustomException extends Exception {
    public function customMessage() {
        return "Fehler in Zeile {$this->getLine()} in Datei {$this->getFile()}: {$this->getMessage()}";
    }
}

try {
    // Code, der eine Ausnahme auslöst
    throw new MyCustomException("Ein Fehler ist aufgetreten");
} catch (MyCustomException $e) {
    // Benutzerdefinierte Ausnahme behandeln
    echo $e->customMessage();
}

Dieser Ansatz vereinfacht das Debugging und macht die Fehlerbehandlung strukturierter.

Hinweis: Benutzerdefinierte Ausnahmen sind nützlich, um spezifische Fehlertypen zu erstellen, z. B. Datenbank-, Netzwerk- oder Authentifizierungsfehler.

13. Fatale Fehler abfangen

Fatale Fehler führen normalerweise zum Abbruch des Skripts. Sie können jedoch mit der Funktion register_shutdown_function abgefangen werden. Beispiel:

PHP
register_shutdown_function(function() {
    $error = error_get_last();
    if ($error && ($error["type"] === E_ERROR || $error["type"] === E_PARSE)) {
        echo "Fataler Fehler: {$error['message']}";
    }
});

Diese Funktion registriert einen Callback, der bei Beendigung des Skripts ausgeführt wird und die letzten Fehler verarbeitet.

Hinweis: Stellen Sie sicher, dass Ihr Skript weiterhin kritische Fehler in eine Datei oder Datenbank protokolliert.

14. Benutzerdefinierter Fehler-Handler

Sie können das Standardverhalten von PHP zur Fehlerbehandlung mit der Funktion set_error_handler überschreiben. Beispiel:

PHP
function customErrorHandler($errno, $errstr, $errfile, $errline) {
    echo "Fehler [{$errno}] in Datei {$errfile} in Zeile {$errline}: {$errstr}";
    // Fehler protokollieren oder verarbeiten
    return true; // Verhindert die Ausführung des Standard-Handlers
}

set_error_handler("customErrorHandler");

// Beispiel für einen Fehler
echo $undefined_variable;

Dieser Code ermöglicht es, die Fehlerbehandlung an die Anforderungen Ihrer Anwendung anzupassen.

Tipp: Verwenden Sie set_error_handler, um ein flexibles Fehlerbehandlungssystem für Ihre Projekte zu erstellen.