Webseiten, Online-Shops, Digitale Medien
Rufen Sie uns an: 037200 828894
Abbonieren


[Valid RSS]

PHP Error Reporting

erstellt am 29.08.2014 von Alexandra Bernhard

Manchmal benötigt man die Anzeige von Fehlermeldungen direkt im Browser. In manchen Umgebungen sind diese Einstellungen allerdings gut versteckt, was den Entwickler Nerven kosten kann. Ich schlüssele auf, welche Möglichkeiten es gibt, von der einfachsten, bis zu komplizierteren Varianten. Hier geht es tatsächlich nur um die Ausgabe der Fehler im Browser und nicht um die Position der Error-Logs. Diese werde ich in einem separaten Bericht behandeln.




1. Automatisch aktivierte Fehlermeldungen


Entwicklungsumgebungen sind meist so eingerichetet, das Fehlermeldungen automatisch angezeigt werden. Das betrifft zum Beispiel Xampp in vielen Versionen. In Live-Umgebungen sollte man das Error-Reporting allerdings deaktivieren, um Angreifern nicht zu viel über die eigenen Schwachstellen zu verraten. Schlimmstenfalls werden diese sonst auch noch von Google indiziert - wodurch man für Angreifer einen leicht zu findenden Honey-Pot darstellen kann.




2. Error Reporting in PHP aktivieren


Wenn keine Fehlermeldungen angezeigt werden, wäre dies der erste Versucht. Einfach eine PHP-Datei öffnen, und in dieser möglichst weit oben folgenden Code einfügen. Diese Methode hat allerdings den Nachteil, das unter Umständen keine Fehlermeldungen angezeigt werden, wenn sie in direkt in der aufgerufenen Datei auftreten. Dann wird der Code unten nämlich einfach gar nicht ausgeführt. Für mit require und include eingebundene Scripte funktioniert es allerdings ohne Probleme. Und ein weiterer Fallstrick lauert, wenn das Error-Reporting in der php.ini selbst deaktiviert ist. Das kann dazu führen, das dieser code nicht funktioniert - insbesondere wenn das Script nicht die Berechtigung besitzt, Einstellungen aus der php.ini zu ändern.


1
2
3
4
5
 
//The default way to enable error reporting
error_reporting(E_ALL);
ini_set("display_errors", 1);
 



3. Error Reporting in der php.ini anpassen


Sollten die Punkte über diesem zu keiner Fehlerausgabe führen, kann man die Ausgabe von Fehlern direkt in der PHP-Ini einstellen. Dazu kann man entweder die globale PHP-INI editieren, oder in vielen Umgebungen auch einfach eine php.ini im jeweiligen Verzeichnis anlegen (zb. im Shared-Hosting/Web-Hosting).

In der PHP-Datei sucht man nach den Einstellungen


1
2
3
 
display_errors
 

und


1
2
3
 
error_reporting
 

Man setzt bei diesen folgende Einstellungen:


1
2
3
4
 
display_errors = On
error_reporting = ~E_ALL
 

Sollte man diese Einstellungen nicht finden, kann man sie einfach hinzufügen.

Vorsicht hier bei manchen Web-Hostern wie bspw. 1und1. Hier muss in jedem Verzeichnis eine php.ini Datei hinterlegt werden, weil diese nicht auf Unterordner vererbt.




4. Error Reporting über htaccess


Einige Hoster erlauben gar keinen Zugriff auf die php.ini. Dann kann man meist alternativ über htaccess Dateien PHP-Einstellungen vornehmen. Die .htaccess Datei sieht dann beispielsweise so aus:


1
2
3
4
5
6
7
8
9
10
11
12
13
 
# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_reporting -1
 



5. Projekte mit Plesk

In neuen Plesk Versionen kann man die Ausgabe von Fehlermeldungen nur noch über das Plesk Control Panel selbst steuern. Dazu loggt man sich in Plesk ein, ruft die Einstellungen für ein Projekt auf. Unter PHP-Einstellungen kann man das Error-Reporting aktivieren und deaktivieren.




6. Hoster mit eigenen Konsolen

Es gibt einige Hoster die eigene Verwaltungsoberflächen/Konsolen ähnlich wie Plesk bieten. Das ist zB. meist bei Managed Servern der Fall. Hier hilft es, entweder den Hoster selbst zu kontaktieren, oder in der Verwaltungsoberfläche nach einer entsprechenden Einstellung zu suchen. Ich nehme Sonderfälle von Hostern gern auf, wenn ihr mir diese mitteilt.