0Pricing
PHP Academy · Lektion

PHP-Fehlertypen und Fehlerberichterstattung

Verstehen Sie Notices, Warnungen und fatale Fehler sowie die Stufen von error_reporting.

PHP-Fehlertypen und Fehlerberichterstattung ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

PHP-Fehlertypen

PHP hat mehrere Fehlerstufen:

  • Notice – geringfügiges Problem, Ausführung wird fortgesetzt
  • Warning – nicht schwerwiegendes Problem, Ausführung wird fortgesetzt
  • Fatal Error – Ausführung wird sofort beendet
  • Parse Error – Syntaxfehler, beendet die Ausführung vor ihrem Beginn
  • Deprecated – Funktion wird entfernt

error_reporting()

Steuern Sie mit error_reporting(), welche Fehler PHP meldet:

<?php
// Show all errors (development)
error_reporting(E_ALL);

// Hide notices and deprecated
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

// Production: no display, log to file
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');

display_errors und log_errors

Wichtige php.ini-Einstellungen für die Fehlerbehandlung:

  • display_errors = On — Fehler im Browser anzeigen (nur Entwicklung)
  • display_errors = Off — Fehler vor Benutzern verbergen (Produktion)
  • log_errors = On — Fehler in die Datei error_log schreiben
  • error_log = /path/to/file — Speicherort des Fehlerprotokolls festlegen

Zeigen Sie Benutzern in der Produktion niemals Fehler an!

Fehler mit trigger_error auslösen

Generieren Sie mit trigger_error() eigene PHP-Fehler:

<?php
function divide(int $a, int $b): float {
    if ($b === 0) {
        trigger_error('Division by zero', E_USER_WARNING);
        return 0.0;
    }
    return $a / $b;
}

echo divide(10, 0);  // triggers E_USER_WARNING

Benutzerdefinierter Fehlerhandler

Registrieren Sie mit set_error_handler() Ihren eigenen Fehlerhandler:

<?php
set_error_handler(function(int $errno, string $errstr, string $file, int $line): bool {
    $message = "[$errno] $errstr in $file:$line";
    error_log($message);
    if ($errno === E_USER_ERROR) {
        http_response_code(500);
        die('Internal error — please try again later');
    }
    return true;  // don't execute PHP internal error handler
});

trigger_error('Custom error message', E_USER_ERROR);

Häufige Fehlerquellen

Typische Ursachen für PHP-Fehler:

  • Auf einen nicht definierten Array-Schlüssel zugreifen → Notice
  • Eine Funktion aufrufen, die false zurückgibt, und anschließend das Ergebnis verwenden → Warning
  • Eine nicht definierte Funktion aufrufen → Fatal Error
  • Fehlendes Semikolon → Parse Error
  • Division durch null → Warning (gibt INF oder NAN zurück)

Operator zur Fehlerunterdrückung @

Der Operator @ unterdrückt Fehler eines einzelnen Ausdrucks — vermeiden Sie ihn und verwenden Sie stattdessen eine ordnungsgemäße Fehlerbehandlung:

<?php
// Bad: hides errors silently
$result = @file_get_contents('missing.txt');

// Good: check explicitly
$result = file_get_contents('missing.txt');
if ($result === false) {
    // handle the error
    echo 'File not found';
}

PHP 8 JIT und Änderungen bei Fehlern

PHP 8 hat die Fehlerbehandlung in einigen Bereichen verschärft:

  • Viele Warnings wurden zu TypeError/ValueError hochgestuft
  • str_contains/starts_with/ends_with ersetzen reguläre Ausdrücke bei einfachen Prüfungen
  • Die Übergabe falscher Argumenttypen löst standardmäßig einen TypeError aus

ini_set zur Laufzeit

Überschreiben Sie php.ini-Einstellungen zur Laufzeit:

<?php
// Display errors during development
if (getenv('APP_ENV') === 'development') {
    ini_set('display_errors', '1');
    ini_set('display_startup_errors', '1');
    error_reporting(E_ALL);
} else {
    ini_set('display_errors', '0');
    ini_set('log_errors', '1');
    error_reporting(E_ALL);
}

Fehlerstufe prüfen

Ermitteln Sie Fehlerstufen mit einem bitweisen AND:

<?php
$level = error_reporting();

if ($level & E_NOTICE) {
    echo 'Notices are reported';
}
if ($level & E_WARNING) {
    echo 'Warnings are reported';
}

// Check specific error types
echo (E_ALL & E_NOTICE) ? 'E_ALL includes E_NOTICE' : 'no';

Bewährte Vorgehensweisen für die Fehlerprotokollierung

Gute Gewohnheiten bei der Fehlerprotokollierung:

  • Protokollieren Sie Fehler in der Produktion immer
  • Fügen Sie Kontext hinzu: Benutzer-ID, Anfrage-URL, Zeitstempel
  • Verwenden Sie strukturierte Protokollierung (JSON) für eine einfachere Auswertung
  • Rotieren Sie Protokolldateien, damit der Speicherplatz nicht knapp wird
  • Überwachen Sie Protokolle mit Tools wie ELK, Datadog oder Papertrail

Kurze Überprüfung

Welcher PHP-Fehlertyp beendet die Ausführung sofort?

Zusammenfassung: PHP-Fehlerberichterstattung

Die wichtigsten Aspekte der Fehlerbehandlung:

  • Fehlertypen: Notice, Warning, Fatal, Parse, Deprecated
  • Die Stufe mit error_reporting() festlegen
  • In der Produktion die Anzeige deaktivieren und die Protokollierung aktivieren
  • Mit set_error_handler() einen benutzerdefinierten Handler registrieren
  • Im Produktionscode niemals mit @ Fehler unterdrücken

Häufig gestellte Fragen

Ist die Lektion „PHP-Fehlertypen und Fehlerberichterstattung“ kostenlos?

Ja — der vollständige Text von „PHP-Fehlertypen und Fehlerberichterstattung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „PHP-Fehlertypen und Fehlerberichterstattung“?

Verstehen Sie Notices, Warnungen und fatale Fehler sowie die Stufen von error_reporting. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „PHP-Fehlertypen und Fehlerberichterstattung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. PHP-Fehlertypen und Fehlerberichterstattung
  2. Try, Catch und Finally
  3. Benutzerdefinierte Exceptions erstellen
  4. Fehler protokollieren und Best Practices
← Zurück zu PHP Academy