Einleitung: Warum Entwickler den weißen Bildschirm fürchten
\n\nJeder PHP-Entwickler kennt die Situation: Der Code ist geschrieben, aber statt des erwarteten Ergebnisses erscheint eine leere Seite. Keine Fehlermeldung, keine Warnung. Nur Stille und kalter Schweiß. Kommt dir das bekannt vor?
\n\nAuf Stack Overflow hat die Frage „How do I get PHP errors to display?“ tausende Aufrufe und hunderte Antworten. Das ist kein Zufall: Die Fähigkeit, Fehler korrekt anzuzeigen und zu behandeln, ist eine grundlegende Fähigkeit, die stundenlanges Debugging spart. Aber es gibt einen Haken: Eine falsche Konfiguration kann nicht nur nutzlos sein, sondern auch die Performance deiner Website beeinträchtigen oder, schlimmer noch, Sicherheitslücken öffnen.
\n\nIn diesem Artikel zeigen wir dir alle Methoden, um PHP-Fehler anzuzeigen – von schnellen Lösungen für die lokale Entwicklung bis hin zu sicheren Einstellungen für den Produktionsserver. Und natürlich sprechen wir über Optimierung: Wie du Logs nicht überflutest und die Website nicht verlangsamst.
\n\nKurzer Überblick: Welche PHP-Fehler gibt es?
\n\nBevor wir die Anzeige aktivieren, ist es hilfreich zu verstehen, womit wir es zu tun haben. PHP generiert verschiedene Fehlerstufen:
\n\n- \n
- E_ERROR – Schwerwiegender Fehler. Das Skript wird gestoppt. Beispiel: Speichermangel, Aufruf einer nicht existierenden Klasse. \n
- E_WARNING – Nicht schwerwiegend. Das Skript läuft weiter, aber etwas ist schiefgelaufen. Beispiel: Einbindung einer nicht vorhandenen Datei. \n
- E_NOTICE – Hinweis. Meist über kleinere Probleme (undefinierte Variable). \n
- E_PARSE – Syntaxfehler. Tritt vor der Codeausführung auf und ist zur Laufzeit schwer abzufangen. \n
- E_ALL – Beinhaltet alle Stufen außer E_STRICT (vor PHP 8.0). \n
Merke dir: In der Entwicklung wollen wir alle Fehler sehen. Auf dem Produktionsserver nur kritische – und zwar in Logs, nicht auf dem Bildschirm.
\n\nMethode Nr. 1: Schnell und direkt – im Code
\n\nDie einfachste Methode für einmaliges Debugging ist, zwei magische Zeilen an den Anfang des Skripts zu setzen:
\n\n<?php\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\n?>\n\nWas passiert hier?
\n- \n
display_errors– aktiviert die Fehlerausgabe auf dem Bildschirm. \n display_startup_errors– zeigt Fehler, die beim PHP-Start auftreten (z. B. in der php.ini). \n error_reporting(E_ALL)– setzt die Berichtsstufe: alles anzeigen. \n
Diese Methode ist ideal für eine einzelne Datei, die du debuggen möchtest. Aber es gibt Nachteile: Du musst daran denken, diese Zeilen vor dem Deployment auf dem Produktionsserver zu entfernen. Sonst riskierst du, den Benutzern die „Innereien“ deiner Anwendung zu zeigen.
\n\nMethode Nr. 2: php.ini konfigurieren – global und dauerhaft
\n\nWenn du auf einem lokalen Rechner arbeitest oder den Server kontrollierst, ist es einfacher, die php.ini zu bearbeiten. Finde diese Datei (normalerweise in /etc/php/ oder /usr/local/etc/php/) und ändere die folgenden Direktiven:
\n\ndisplay_errors = On\ndisplay_startup_errors = On\nerror_reporting = E_ALL\n\nVergiss nicht, nach den Änderungen den Webserver neu zu starten:
\nsudo systemctl restart apache2\n# oder\nsudo systemctl restart nginx php8.1-fpm\n\nWichtig: Auf dem Produktionsserver muss display_errors auf Off gesetzt sein. Stattdessen solltest du das Logging von Fehlern in eine Datei konfigurieren:
display_errors = Off\nlog_errors = On\nerror_log = /var/log/php_errors.log\nerror_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT\n\nDies reduziert die Auslastung der Ausgabe und schützt die Daten deiner Website.
\n\nMethode Nr. 3: Über .htaccess – für Shared-Hosting
\n\nWenn du keinen Zugriff auf die php.ini hast (z. B. bei günstigem Hosting), verwende die Datei .htaccess im Stammverzeichnis deiner Website:
\n\nphp_flag display_errors on\nphp_flag display_startup_errors on\nphp_value error_reporting 32767