Start · Sprachen · PHP · Referenz · error_reporting

error_reporting

Funktion

Legt fest, welche PHP-Fehlermeldungen gemeldet werden, und gibt das aktuell geltende Fehler-Reporting-Level zurück.

seit PHP 4.0.0 Kategorie: error

Signatur

error_reporting(int|null $error_level = null): int

Beschreibung

error_reporting() steuert, welche Arten von PHP-Fehlern, Warnungen und Hinweisen gemeldet werden. Das Fehler-Reporting-Level kann entweder als Integer oder als Kombination der vordefinierten Fehlerkonstanten (z. B. E_ALL, E_WARNING, E_NOTICE) übergeben werden. Die Funktion beeinflusst die Fehlerausgabe im Browser bzw. im Log, nicht aber das Verhalten von set_error_handler()-Callbacks.

Wird kein Argument übergeben (oder null), gibt die Funktion lediglich das aktuell geltende Level zurück, ohne es zu verändern. Das ist nützlich, um den aktuellen Zustand zu lesen, bevor man ihn temporär ändert und später wiederherstellt.

Typischerweise setzt man in der Entwicklungsumgebung error_reporting(E_ALL), um alle Fehler inkl. E_STRICT und E_DEPRECATED anzuzeigen. In Produktionsumgebungen empfiehlt sich hingegen das Abschalten der Fehlerausgabe (display_errors = Off in der php.ini) kombiniert mit dem Loggen der Fehler via log_errors = On.

Konstanten können mit dem bitweisen ODER (|) kombiniert und mit dem bitweisen UND-NOT (& ~) ausgeschlossen werden. Beispiel: E_ALL & ~E_NOTICE meldet alle Fehler außer Hinweisen.

Parameter

Name Typ Default Beschreibung
$error_level int|null null Das gewünschte Fehler-Reporting-Level als Integer oder Kombination von Fehlerkonstanten wie E_ALL, E_WARNING, E_NOTICE usw. Wird null oder kein Wert übergeben, wird das aktuelle Level nur gelesen, nicht geändert.

Rückgabewert

Typ
int
Beschreibung
Gibt das bisher geltende Fehler-Reporting-Level zurück — also den Wert, der vor dem Aufruf aktiv war. Bei einem Aufruf ohne Argument ist dies gleichzeitig der aktuell aktive Wert.

Beispiele

Alle Fehler in der Entwicklung aktivieren

<?php
// Alle Fehlermeldungen einschalten (empfohlen für Entwicklung)
error_reporting(E_ALL);
ini_set('display_errors', '1');

// Provoziert einen Notice
echo $undefinierteVariable;
Notice: Undefined variable: undefinierteVariable in /pfad/zur/datei.php on line 7

Bestimmte Fehlerklassen ausschließen

<?php
// Alle Fehler außer E_NOTICE und E_DEPRECATED melden
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

$level = error_reporting();
echo 'Aktuelles Level: ' . $level;
Aktuelles Level: 24567

Level temporär ändern und wiederherstellen

<?php
// Aktuelles Level sichern
$vorher = error_reporting(0); // Alle Fehler unterdrücken

// Fehleranfälliger Code, der keine Ausgabe erzeugen soll
$ergebnis = @file_get_contents('nicht_vorhanden.txt');

// Original-Level wiederherstellen
error_reporting($vorher);

echo 'Level wiederhergestellt: ' . error_reporting();
Level wiederhergestellt: 32767

Nur fatale Fehler und Warnungen (Produktions-Beispiel)

<?php
// In Produktion: nur schwerwiegende Fehler melden, Ausgabe deaktivieren
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');

echo 'Fehler-Reporting-Level: ' . error_reporting();
Fehler-Reporting-Level: 7

// Wichtig · Fallstricke

Sicherheitshinweis: In Produktionsumgebungen sollte display_errors immer auf Off gesetzt werden, da detaillierte Fehlermeldungen Angreifern interne Pfade, Datenbankstruktur oder andere sensible Informationen preisgeben können. Stattdessen sollten Fehler in eine Logdatei geschrieben werden.

Achtung: error_reporting() wirkt sich nicht auf benutzerdefinierte Fehlerbehandler aus, die mit set_error_handler() registriert wurden — diese werden unabhängig vom eingestellten Level aufgerufen, außer bei fatalen Fehlern (E_ERROR).

Deprecation ab PHP 8.0: Das Setzen des Levels auf 0 wird in einigen Kontexten als schlechte Praxis angesehen; stattdessen sollte man gezielt Konstanten kombinieren.

Die Einstellung in der php.ini gilt als Standardwert; error_reporting() überschreibt diesen nur für die aktuelle Laufzeit des Skripts.