Wie lassen sich Fehler in php debuggen, wenn in der php.ini mit der Einstellung display_errors = Off díe Ausgabe der Fehler abgestellt ist?
Manche Fehler lassen sich dann einfach nicht anzeigen. Die richtigen Einstellungen im php-Skript helfen meistens dabei, aber nicht immer. Lesen Sie weiter, welche Lösung dieses Problem haben kann.
In meiner php.ini sind folgende Direktiven gesetzt:
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
log_errors = On
Das klappt soweit auch wunderbar und funktioniert so für alle Domains.
Jetzt würde ich gerne für ein einzelnes Skript einer einzelnen Domain zu Debug-Zwecken dies einschalten.
In den Anfang des php-Skriptes habe ich folgendes geschrieben:
error_reporting(E_ALL);
ini_set('display_errors','On');
Wenn eine Seite einen Fehler hat, wird dieser jedoch nicht angezeigt, die Seite bleibt einfach leer/weiß.
Jetzt habe ich bewusst ein Testdokument erstellt (Division durch Null):
//Fehlermeldungen ausgeben
error_reporting(E_ALL);
ini_set('display_errors','On');
echo 1/0
Ich erhalte tatsächlich eine Warnmeldung:
Warning: Division by zero in /var/www/html/dom.domain.de/_temptest.php on line 6
Hier ein anderer Versuch (Fehler im Code: Hochkomma vergessen):
//Fehlermeldungen ausgeben
error_reporting(E_ALL);
ini_set('display_errors','On');
echo '1234;
Die Seite bleibt leer! Keine Ausgabe des Fehlers.
Die Lösung des Problems:
Das Problem ist, dass es zu einem parse-error kommt. Mit dem fehlenden ' kann das Programm insgesamt nicht mehr geparst werden - damit kann das Skript gar nicht mit der Ausführung anfangen und somit auch den ini_set nicht ausführen.
Hier beisst sich also die Katze in den Schwanz.
Man kann dieses Problem mit alleinigen php-Mitteln gar nicht lösen.
Wer Direktiven in der .htaccess setzen kann hat Glück gehabt.
In dem gewünschten Verzeichnis einer Domain kann man eine .htaccess Datei erstellen:
php_flag display_errors on
php_value error_reporting 2047
Vorsicht:
php_value error_reporting E_ALL in der .htaccess funktioniert nicht! Hier muss die Bitschreibweise angewandt werden.
Siehe auch: http://www.php.net/error_reporting
Bookmarks:
Delicious Facebook Google Yahoo Mr. Wong Linkarena Digg