PHP - Error Reporting / Fehlerbehandlung: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „ == Links == == Einleitung == PHP Fehler und Warnungen können ein und ausgeschaltet werden. Dies funktioniert an verschiedenen Stellen: # in der php.ini # übe…“) |
(kein Unterschied)
|
Aktuelle Version vom 9. März 2012, 09:02 Uhr
Links[Bearbeiten]
Einleitung[Bearbeiten]
PHP Fehler und Warnungen können ein und ausgeschaltet werden. Dies funktioniert an verschiedenen Stellen:
- in der php.ini
- über htaccess (wenn die Konfiguration es erlaubt)
- ü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');