Start · Sprachen · PHP · Referenz · $php_errormsg

$php_errormsg

Superglobal

Enthält die zuletzt durch PHP erzeugte Fehlermeldung, sofern <code>track_errors</code> aktiviert ist und der Fehler im aktuellen Gültigkeitsbereich aufgetreten ist.

seit PHP 4.0.0 Kategorie: http

Signatur

string $php_errormsg

Beschreibung

$php_errormsg ist eine Variable (keine echte Superglobale), die automatisch von PHP befüllt wird, sobald ein Laufzeitfehler oder eine Warnung auftritt – vorausgesetzt, die Direktive track_errors ist in der php.ini auf On gesetzt. Sie enthält stets die zuletzt aufgetretene Fehlermeldung als Zeichenkette.

Im Gegensatz zu echten Superglobalen wie $_GET ist $php_errormsg gültigkeitsbereichgebunden: Sie ist nur in dem Scope verfügbar, in dem der Fehler aufgetreten ist. In Funktionen oder Methoden muss sie daher gegebenenfalls mit global $php_errormsg importiert werden.

Typischerweise wird $php_errormsg in Kombination mit dem Fehlerunterdrückungsoperator @ eingesetzt: Ein Funktionsaufruf wird mit @ präfixiert, um die Standard-Fehlerausgabe zu unterdrücken, und anschließend wird $php_errormsg ausgewertet, um den Fehler programmatisch zu behandeln.

Wichtig: $php_errormsg wurde in PHP 7.2 als deprecated markiert und in PHP 8.0 vollständig entfernt. Als Ersatz sollte error_get_last() verwendet werden, die unabhängig von track_errors und ohne Gültigkeitsbereichsprobleme funktioniert.

Beispiele

Fehlermeldung nach fehlgeschlagenem Datei-Öffnen auswerten

<?php
// Nur bis PHP 7.x – track_errors muss in php.ini aktiv sein
ini_set('track_errors', '1');

$handle = @fopen('/nichtvorhandene/datei.txt', 'r');

if ($handle === false) {
    echo 'Fehler: ' . $php_errormsg;
} else {
    fclose($handle);
}
Fehler: failed to open stream: No such file or directory

Moderne Alternative mit error_get_last() (PHP 5.2+ / 8.0+)

<?php
// Empfohlene Vorgehensweise ab PHP 8.0 (Ersatz für $php_errormsg)
$handle = @fopen('/nichtvorhandene/datei.txt', 'r');

if ($handle === false) {
    $fehler = error_get_last();
    echo 'Fehler: ' . ($fehler['message'] ?? 'Unbekannter Fehler');
} else {
    fclose($handle);
}
Fehler: fopen(/nichtvorhandene/datei.txt): Failed to open stream: No such file or directory

// Wichtig · Fallstricke

Deprecation & Entfernung: $php_errormsg wurde mit PHP 7.2 als veraltet (deprecated) markiert und ist seit PHP 8.0 nicht mehr verfügbar. Bestehender Code muss auf error_get_last() umgestellt werden.

Gültigkeitsbereich: Da es sich nicht um eine echte Superglobale handelt, ist die Variable nicht automatisch in Funktionen verfügbar. Innerhalb einer Funktion muss global $php_errormsg; deklariert werden, was häufig zu Fehlern führt und ein weiterer Grund ist, error_get_last() zu bevorzugen.

Überschreiben: Der Wert wird bei jedem neuen Fehler überschrieben. Tritt zwischen dem Fehleraufruf und der Auswertung ein weiterer Fehler auf, geht die ursprüngliche Nachricht verloren.

Abhängigkeit von track_errors: Ohne track_errors = On in der php.ini bleibt $php_errormsg leer oder undefiniert. Die Einstellung track_errors selbst wurde ebenfalls in PHP 7.2 deprecated und in PHP 8.0 entfernt.