Einleitung: Warum zeigt PHP keine Fehler an?
\n\nKennst du das? Du schreibst ein PHP-Skript, rufst es im Browser auf – und siehst... eine leere, weiße Seite? Keine Meldung, kein Hinweis. Nur Stille und das Gefühl, etwas falsch gemacht zu haben. Kommt dir bekannt vor?
\n\nDas ist eines der häufigsten Probleme, mit denen PHP-Anfänger konfrontiert werden. Die Frage „How can I get useful error messages in PHP?“ auf Stack Overflow hat tausende Aufrufe. Kein Wunder: Ohne aussagekräftige Fehlermeldungen wird Debugging zur Glaskugelleserei.
\n\nIn diesem Artikel zeige ich dir, wie du PHP dazu bringst, dir ehrlich zu sagen, was schiefgelaufen ist. Du erfährst, welche Einstellungen für die Fehlerausgabe verantwortlich sind, wie du sie in verschiedenen Entwicklungsphasen aktivierst und was zu tun ist, wenn Fehler trotzdem nicht angezeigt werden. Los geht's!
\n\nWarum versteckt PHP standardmäßig Fehler?
\n\nBevor wir an den Einstellungen herumschrauben, lass uns den Grund verstehen. PHP ist eine serverseitige Sprache. Auf Produktivservern ist es schlechte Praxis, Fehler anzuzeigen. Stell dir vor: Statt einer schönen Onlineshop-Seite sieht der Kunde Fatal error: Call to undefined function. Das ist nicht nur unschön, sondern auch unsicher – Angreifer könnten so die Struktur deines Codes erkennen.
Deshalb haben die PHP-Entwickler die Fehlerausgabe im Browser standardmäßig deaktiviert. Aber auf einem lokalen Server (z.B. XAMPP, MAMP, Laragon) oder während der Entwicklung stört das gewaltig. Das ändern wir jetzt.
\n\nMethode 1: Fehler über die php.ini aktivieren (global)
\n\nDie zuverlässigste Methode ist die Änderung der Konfigurationsdatei php.ini. Finde sie im PHP-Verzeichnis (oder im Kontrollpanel deines lokalen Servers). Öffne die Datei und suche (oder füge) folgende Zeilen ein:
display_errors = On\nerror_reporting = E_ALL\n\n\nWas bedeutet das?
\n- \n
display_errors = On– erlaubt die Ausgabe von Fehlern direkt auf dem Bildschirm (Browser oder Konsole). \n error_reporting = E_ALL– weist PHP an, alle Fehlertypen anzuzeigen: von Warnungen (Warnings) bis zu fatalen Fehlern. \n
Nach den Änderungen starte den Webserver (Apache, Nginx) neu. Jetzt gibt jedes Skript Fehler aus.
\n\nWichtig: Auf einem Produktivserver solltest du display_errors = On niemals aktiviert lassen. Verwende stattdessen Off und richte ein Logging ein (dazu später mehr).
Methode 2: Fehler direkt im Skript aktivieren (schnell)
\n\nWenn du keinen Zugriff auf die php.ini hast (z.B. bei Shared-Hosting) oder Fehler nur für eine bestimmte Datei aktivieren willst, nutze die Funktionen ini_set() und error_reporting(). Füge diese Zeilen ganz an den Anfang deines PHP-Skripts:
<?php\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\n\n// Dein Code hier\n$foo = 1/0; // Löst Warning: Division by zero aus\n?>\n\n\nDie Zeilen im Detail:
\n- \n
ini_set('display_errors', 1)– aktiviert die Fehlerausgabe auf dem Bildschirm. \n ini_set('display_startup_errors', 1)– aktiviert Fehler, die beim PHP-Start auftreten (z.B. wenn das Skript selbst nicht geladen werden kann). \n error_reporting(E_ALL)– zeigt alle Fehlerstufen an. \n
Diese Methode wirkt sofort und benötigt keinen Server-Neustart. Ideal für schnelles Debugging.
\n\nMethode 3: .htaccess verwenden (für Apache)
\n\nWenn du einen Apache-Server betreibst, kannst du Fehler über die Datei .htaccess im Stammverzeichnis deiner Website aktivieren. Füge folgende Zeilen ein:
php_flag display_errors on\nphp_value error_reporting E_ALL\n\n\nNach dem Speichern der Datei werden Fehler für alle Skripte in diesem Ordner und seinen Unterordnern angezeigt. Praktisch, wenn du schnell das Debugging aktivieren möchtest.