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 schreibenerror_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_WARNINGBenutzerdefinierter 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_withersetzen 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
- PHP-Fehlertypen und Fehlerberichterstattung
- Try, Catch und Finally
- Benutzerdefinierte Exceptions erstellen
- Fehler protokollieren und Best Practices