Wie man PHP dazu bringt, alle Fehler anzuzeigen: Vollständige Anleitung

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

„PHP zeigt einen weißen Bildschirm, aber ich brauche Fehler!“ – Eine bekannte Situation?



Sie schreiben Code in PHP, führen das Skript aus, und statt eines Ergebnisses sehen Sie nur Leere. Oder noch schlimmer, ein seltsamer Fehler ohne jeden Hinweis auf die Ursache. Kommt Ihnen das bekannt vor? Wenn Sie sich jemals gefragt haben „How can I get useful error messages in PHP?“ – Sie sind nicht allein. Diese Frage auf Stack Overflow hat tausende Aufrufe, und das aus gutem Grund. PHP ist standardmäßig so konfiguriert, dass es Fehler auf Produktionsservern verbirgt, aber in der Entwicklungsphase wird dies zu einem echten Kopfschmerz.



In diesem Artikel werden wir alle Möglichkeiten durchgehen, PHP dazu zu bringen, in einer verständlichen Sprache mit Ihnen zu sprechen. Sie erfahren, wie Sie die Fehleranzeige aktivieren, die Detailstufe einstellen und Fehler protokollieren, damit das Debuggen kein Ratespiel mehr ist. Los geht‘s!



Warum schweigt PHP? Die Wurzel des Übels – Servereinstellungen



Bevor wir lernen, nützliche Meldungen zu erhalten, wollen wir verstehen, warum es keine gibt. PHP ist eine Sprache mit einer strengen Sicherheitsphilosophie. Auf Produktionsservern ist es schlechter Stil und ein Sicherheitsrisiko, Fehler anzuzeigen. Daher stehen in der php.ini (der Hauptkonfigurationsdatei von PHP) standardmäßig folgende Einstellungen:



  • display_errors = Off – Fehler werden nicht auf dem Bildschirm ausgegeben.
  • error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT – Es werden nicht alle Fehlertypen angezeigt.


Für die lokale Entwicklung ist das jedoch eine Katastrophe. Wie kann man das beheben? Es gibt drei Hauptwege.



Methode 1: Ändern der php.ini (falls Zugriff vorhanden)



Die zuverlässigste Methode ist das Bearbeiten der Datei php.ini. Finden Sie sie (normalerweise liegt sie im Stammverzeichnis der PHP-Installation oder im Ordner etc/ unter Linux). Suchen Sie dann die folgenden Zeilen und ändern Sie sie:



; Fehlerausgabe auf dem Bildschirm aktivierendisplay_errors = On

; Maximale Berichtsstufe festlegen (alle Fehler, außer Veraltungshinweisen)error_reporting = E_ALL


Nach den Änderungen müssen Sie den Webserver (Apache, Nginx oder den integrierten PHP-Server) unbedingt neu starten, da die Einstellungen sonst nicht übernommen werden.



Wichtig: Auf einem Produktionsserver sollte display_errors immer Off sein. Verwenden Sie diese Methode nur für die Entwicklung.



Methode 2: Verwendung der .htaccess (für Apache)



Wenn Sie keinen Zugriff auf die php.ini haben, aber Apache verwenden, können Sie die Einstellungen über die Datei .htaccess im Stammverzeichnis Ihrer Website überschreiben. Fügen Sie Folgendes hinzu:



php_flag display_errors onphp_value error_reporting E_ALL


Dies funktioniert, wenn Apache das Überschreiben von PHP-Direktiven erlaubt (was bei den meisten Hosting-Anbietern der Fall ist).



Methode 3: Fehler direkt im Code aktivieren (am flexibelsten)



Dies ist meine Lieblingsmethode für schnelles Debugging. Sie können diese Zeilen am Anfang des Skripts einfügen (direkt nach <?php):



<?php// Maximale Fehlerberichtsstufe aktivierenerror_reporting(E_ALL);

// Fehlerausgabe auf dem Bildschirm aktivierenini_set('display_errors', 1);

// Ausgabe von Startfehlern aktivieren (z. B. wenn der Fehler in ini_set selbst liegt)ini_set('display_startup_errors', 1);?>


Jetzt wird jede Warning, Notice oder Fatal Error direkt im Browser angezeigt. Praktisch, oder?



Welche Fehlertypen gibt es in PHP und was bedeuten sie?



Um die „Signale“ von PHP zu lesen, müssen Sie seine Sprache kennen. Hier sind die wichtigsten Fehlertypen, die Sie am häufigsten sehen werden:



  • E_ERROR – schwerwiegender Fehler. Das Skript wird gestoppt. Beispiel: Aufruf einer nicht existierenden Funktion.
  • E_WARNING – Warnung. Das Skript läuft weiter, aber etwas ist schiefgelaufen. Beispiel: include() einer nicht existierenden Datei.
  • E_NOTICE – Hinweis. Kein Fehler, aber ein potenzielles Problem. Beispiel: Verwendung einer undefinierten Variable.<

Blogs

Buchempfehlungen