Mein PHP-Script zeigt nur eine leere weiße Seite

Aus php bar
Wechseln zu: Navigation, Suche

Wenn beim Aufruf eines Scriptes nur eine weiße Seite angezeigt wird deutet dies eigentlich immer darauf hin, dass ein Fehler auftrat und die Script-Ausführung unterbrochen wurde, allerdings die Fehlermeldung aufgrund der aktuellen Konfiguration nicht ausgegeben wird oder es gar nicht zu einer Fehlermeldung kommt weil kein syntaktischer oder Laufzeit Fehler sondern ein Logischer Fehler vorliegt.

in den meisten Fällen hilft ein:

1 span class="st0">'display_errors'

am Anfang des Scripts.

Manchmal ist es auch nötig diese Einstellungen in der php.ini, inklusive display_startup_erros, zu setzen, nämlich wenn der Fehler bereits vor erreichen des Scriptanfangs auftritt.

Die Ursache kann auch sein, dass ein Fehler auftritt und durch den Output Buffer die Ausgabe verhindert wird. Wenn dies der Fall ist kann man den Output Buffer mit einem ob_end_clean() bzw. ob_end_flush() beenden bzw. die ob_Start() aufrufe auskommentiren um den Output Buffer ganricht erst zu starten.

Eine weiter Möglichkeit an unterdrückte Fehlermeldung zu kommen ist diese in ein Logfile zu schreiben und dann dieses auszuwerten. Dies geht indem man die php.ini-Optionen error_log und log_errors auf ein entsprechendes Logfile stellt - dies geht auch zur Laufzeit per ini_set().

Wenn das auch zu keinem besseren Ergebnis führt und ein Debuggen auf dem Server nicht möglich ist, bleibt noch das Einfügen von echo-Anweisungen vor kritischen stellen um den durchlauf des Scriptes zu verfolgen.

Script-Kontrolle mittels echo:

1 span class="co1">// funktionsaufrufe ...
2 // funktionsaufrufe ...
3 // funktionsaufrufe ...
4 
1
4

an der Ausgabe erkennen wir nun das der Fehler zumindest auf den Code zwischen den Zeilen 4 und 7 einzugrenzen ist.

Bei schwerwiegenderen Fehlern, z. B. Absturz der PHP-Engine oder gar des Webservers, kann es unter Umständen auch bei einer leeren weißen Seite bleiben, aber im Normalfall sollte dann ein Server-Fehler (500) angezeigt werden. In diesem Fall hilft nur ein Blick in die Logdateien des Webservers.