PHP - Error Reporting / Fehlerbehandlung

Aus Wikizone
Wechseln zu: Navigation, Suche

Links[Bearbeiten]

Einleitung[Bearbeiten]

PHP Fehler und Warnungen können ein und ausgeschaltet werden. Dies funktioniert an verschiedenen Stellen:

  1. in der php.ini
  2. über htaccess (wenn die Konfiguration es erlaubt)
  3. über php Skripte (wenn die Konfiguration es erlaubt)


Relevante Werte[Bearbeiten]

Error Reporting über php.ini[Bearbeiten]

Hier werden obige Werte einfach durch Leerzeichen getrennt angegeben. Die php.ini ist hier gut kommentiert.

Error Reporting über htaccess setzen[Bearbeiten]

Beispiel (Produktiv Betrieb)

php_value error_reporting 2047
php_value display_errors 0 
php_value log_errors 1
php_value error_log /eigener/pfad/fehler.log

Die Methode über die .htaccess funktioniert ähnlich wie bei der php.ini. Beachten sollte man allerdings, dass die Namen der Konstanten wie E_ALL, E_ERROR oder E_NOTICE nicht genutzt werden können. Jede Konstante hat jedoch einen bestimmten Wert. So steht die 2047 zum Beispiel für E_ALL. Die Werte der jeweiligen Konstante ist folgender Tabelle zu entnehmen:

Wert 	Konstante
1  		E_ERROR
2 		E_WARNING
4 		E_PARSE
8 		E_NOTICE
16 		E_CORE_ERROR
32 		E_CORE_WARNING
64 		E_COMPILE_ERROR
128 		E_COMPILE_WARNING
256 		E_USER_ERROR
512 		E_USER_WARNING
1028 	E_USER_NOTICE
2047 	E_ALL

Um etwa alle Fehler anzuzeigen, muss folgende Zeile in die .htaccess geschrieben werden:

php_value error_reporting 2047

Soll bei der Ausgabe der Fehlermeldungen differenziert werden, müssen die entsprechenden Werte der jeweiligen Konstanten von E_ALL abgezogen werden. Wenn etwa die Standardeinstellung E_ALL & ~E_NOTICE verlangt wird, muss in der .htaccess folgende Zeile stehen:

php_value error_reporting 2039

Da E_NOTICE den Wert 8 besitzt, wird 2047 – 8 gerechnet. Auch der umgekehrte Weg funktioniert. Soll nur der Fehler E_WARNING und E_NOTICE sichtbar sein, aber alle anderen nicht, so muss der Wert der jeweiligen Konstante addiert werden. Gerechnet wird also 2 + 8 = 10. Die .htaccess muss also den folgenden Eintrag beinhalten:

hp_value error_reporting 10

Diese Einstellungen sind allerdings nur für die Entwicklung relevant. Im Produktivbetrieb sollten wie bei der Konfiguration direkt über die php.ini alle Fehler unterdrückt, aber protokolliert werden. Um dies zu realisieren, muss die .htaccess folgende Einträge bieten:

php_value error_reporting 2047
php_value display_errors 0
php_value log_errors 1
php_value error_log /eigener/pfad/fehler.log

(siehe Beispiel oben)

Hierbei kann nicht mit den Konstanten On und Off gearbeitet werden. Für On wird eine 1, für Off eine 0 verwendet.

Error Reporting über php setzen[Bearbeiten]

Beispiel

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1); ini_set('error_log', '/eigener/pfad/fehler.log');