Wie man PHP dazu bringt, Fehler anzuzeigen: Ein Leitfaden für Profis und Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

„Weißer Bildschirm des Todes“ in PHP: Wie bringt man Fehler zum Sprechen?



Jeder PHP-Entwickler kennt die Situation: Der Code funktioniert scheinbar, aber auf dem Bildschirm ist nichts zu sehen. Keine Meldung, keine Warnung. Nur ein weißes Blatt und ein Gefühl leichter Verzweiflung. Kommt Ihnen das bekannt vor? Das ist der klassische „Weiße Bildschirm des Todes“ (White Screen of Death – WSOD). Meistens liegt das Problem darin, dass die PHP-Fehlerausgabe deaktiviert ist.



Auf Stack Overflow hat die Frage „How do I get PHP errors to display?“ tausende Aufrufe gesammelt. Und das ist kein Zufall: Die Konfiguration der Fehleranzeige ist eine Grundlage, die jeder kennen muss. Aber es reicht nicht, einfach display_errors zu aktivieren. Man muss verstehen, wie sich dies auf die Leistung und Sicherheit Ihrer Anwendung auswirkt.



In diesem Artikel behandeln wir:

  • Wie man PHP-Fehler in verschiedenen Umgebungen aktiviert (lokal, auf dem Server, in Frameworks);
  • Wie man error_reporting für optimales Debugging konfiguriert;
  • Warum die Fehlerausgabe in der Produktion eine schlechte Idee ist;
  • Wie man Fehler protokolliert, ohne die Leistung zu beeinträchtigen.


Los geht‘s!



Warum zeigt PHP keine Fehler an? Drei Hauptgründe



Bevor wir in den Code eintauchen, lassen Sie uns verstehen, warum Fehler verborgen sein können. PHP ist eine flexible Sprache, und ihr Verhalten hängt von den Einstellungen in php.ini, dem Skript selbst und der Serverumgebung ab.



1. php.ini-Einstellungen

Der Hauptschuldige ist die Direktive display_errors. Standardmäßig ist sie auf vielen Hosting-Plattformen auf Off gesetzt. Dies dient der Sicherheit: In der Produktion ist es eine schlechte Praxis, dem Benutzer einen Stack-Trace anzuzeigen.



2. Die Funktion error_reporting()

Auch wenn display_errors aktiviert ist, kann die Fehlerstufe zu niedrig sein. Zum Beispiel verbirgt error_reporting(0) alles. Oder Sie filtern versehentlich die benötigten Fehlertypen heraus (E_NOTICE, E_WARNING).



3. Fehler vor der Skriptausführung

Die tückischsten sind Syntaxfehler in der php.ini oder in eingebundenen Dateien. Wenn PHP das Skript nicht einmal starten kann, gelangt es nicht zu Ihren Einstellungen. In solchen Fällen hilft die Syntaxprüfung über die Konsole: php -l datei.php.



So aktivieren Sie die PHP-Fehlerausgabe: Eine Schritt-für-Schritt-Anleitung



Methode 1. Bearbeiten der php.ini (dauerhafte Einstellungen)

Die zuverlässigste Methode ist die Änderung der php.ini. Finden Sie die Datei (normalerweise in /etc/php/ oder /usr/local/etc/php/) und setzen Sie:



display_errors = Onerror_reporting = E_ALL


Nach den Änderungen den Server unbedingt neu starten:

sudo service apache2 restart# oder für nginx + php-fpm:sudo service php8.1-fpm restart


Vorteile: Die Einstellung gilt für alle Skripte auf dem Server.
Nachteile: Erfordert Serverzugriff; nicht geeignet für Shared Hosting.



Methode 2. Über .htaccess (für Apache)

Wenn Sie keinen Zugriff auf die php.ini haben, aber Apache verwenden, nutzen Sie die .htaccess:



php_flag display_errors onphp_value error_reporting 32767  # E_ALL


Wichtig: Diese Methode funktioniert nur, wenn auf dem Server die Direktive AllowOverride erlaubt ist.



Methode 3. Direkt im Skript (zum Debuggen)

Die flexibelste Option ist, Fehler in einer bestimmten Datei zu aktivieren. Ideal für die Entwicklung:



<?phpini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);

// Ihr Codeecho $undefined_variable; // Löst einen Notice aus?>


Beachten Sie display_startup_errors – es fängt Fehler ab, die vor der Skriptausführung auftreten (z. B. beim Einbinden von Dateien).



Methode 4. Besonderheiten von Frameworks (Laravel, Symfony, WordPress)

Moderne Frameworks haben ihre eigenen Mechanismen. In Laravel

Blogs

Buchempfehlungen