In unseren Programmierer-Alltag passieren immer wieder Fehler. Klassische Fehler sind: man schreibt eine Variable falsch, oder man verwendet eine Variable die zuvor noch nicht deklariert wurde. Hier stelle ich euch paar nützliche Anpassungen für die php.ini für die Entwicklungsphase und für den Echtbetrieb.

Entwicklungsphase
Währen der Entwicklung- und Testphase sollten alle Fehler angezeigt werden:

error_reporting = E_ALL | E_STRICT
display_errors = on

Alle Fehler und Warnungen die unterstützt werden, werden auch angezeigt. Zusätzlich bekommen wir noch Benachrichtigungen des Laufzeitsystems. Damit erhalten wir PHP Vorschläge über Änderungen des Programmcodes, die eine bestmögliche Interoperabilität und zukünftige Kompatibilität unseren Codes gewährleisten.

Echtbetrieb
Im Produktionsumfeld sollten nur die wichtigsten Fehler aktiviert werden:

error_reporting = E_ALL & ~E_NOTICE
display_errors = off

Hiermit erhalten wir Benachrichtigungen während der Laufzeit. Sie zeigen an, dass im Skript irgend etwas gefunden wurde, was einen Fehler verursachen könnte. Es ist aber genauso möglich, dass Benachrichtigungen im ordnungsgemäßen Ablauf eines Skripts ausgegeben werden.

Im Notfall (ist jedoch nicht die beste Lösung) kann das Error-Reporting mit der Methode error_reporting() und mit der ini_set(‚display_errors‘, value); aktiviert bzw. benutzt werden.

Die PHP Fehler, können jedoch in einen eigenen error_handler abgefangen werden und als eine Exception weiter verarbeitet werden.

/**
* PHP error handler, converts all errors into ErrorExceptions. This handler
* respects error_reporting settings.
*
* @throws ErrorException
* @return TRUE
*/
function my_error_handler($code, $error, $file = NULL, $line = NULL)
{
    if (error_reporting() & $code)
    {
        // This error is not suppressed by current error reporting settings
        // Convert the error into an ErrorException
        throw new ErrorException($error, $code, 0, $file, $line);
    }
    // Do not execute the PHP error handler
    return TRUE;
}

set_error_handler("my_error_handler");

Mit der tray und catch Anweisung können wir nun unseren Code nach normalem und unnormalem Verhalten trennen. Wir haben also php-error-triggers in Exceptions umgeleitet, und da sowieso schon ein sehr großer Teil der Programmierung sich dem Abfangen von Fehlern widmet, können wir nun mit unsere neuen Lösungsansatz die Übersicht der Fehlerbehandlung verbessern und kontrollieren.

1 thought on “PHP Errors – Best Practices

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.