Basics

PHP meldet Fehler als Reaktion auf eine Reihe von internen Fehlerzuständen. Diese können verwendet werden, um eine Reihe von verschiedenen Zuständen zu signalisieren, und können nach Bedarf angezeigt und/oder protokolliert werden.

Jeder Fehler, den PHP erzeugt, beinhaltet einen Typ. Eine Liste dieser Typen ist verfügbar, zusammen mit einer kurzen Beschreibung ihres Verhaltens und wie sie hervorgerufen werden können.

Fehlerbehandlung mit PHP

Wenn keine Funktion zur FehlerBehandlung bestimmt wurde, behandelt PHP alle auftretenden Fehler gemäß seiner Konfiguration. Welche Fehler berichtet und welche ignoriert werden wird dabei durch die Anweisung error_reporting in der php.ini oder zur Laufzeit durch den Aufruf von error_reporting() kontrolliert. Es wird dringend empfohlen, dass die Konfigurationsanweisung gesetzt werden, da einige Fehler auftreten können, bevor die Ausführung des Skripts beginnt.

In einer Entwicklungsumgebung sollte error_reporting immer auf den Wert E_ALL eingestellt werden, damit man auf alle von PHP festgestellten Probleme aufmerksam gemacht wird und diese korrigieren kann. In einer Produktivumgebung würde man dies auf einen weniger geschwätzigen Wert wie etwa E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED einstellen, wobei aber in vielen Fällen E_ALL ebenfalls angemessen ist, da es eine Frühwarnung für potentielle Probleme anbieten kann.

Wie PHP mit diesen Fehlern weiter fortfährt, hängt von zwei weiteren Anweisungen in php.ini ab. display_errors kontrolliert, ob ein Fehler als Teil der Ausgabe des Skriptes angezeigt wird. Dies sollte in einer Produktivumgebung immer abgestellt werden, da es sensible Informationen wie beispielsweise Datenbankzugangsdaten beinhalten kann, aber in Entwicklungsumgebungen ist es oft hilfreich dies einzuschalten, da es eine sofortige Berichterstattung über Probleme sicherstellt.

Zusätzlich zum Anzeigen von Fehlern kann PHP die Fehler protokollieren, wenn die Anweisung log_errors aktiviert ist. Damit werden alle Fehler in die Datei oder Syslog protokolliert, welche durch die Anweisung error_log eingestellt ist. Dies kann in Produktivumgebungen sehr hilfreich sein, da damit auftretende Fehler protokolliert und daraus hilfreiche Berichte erzeugt werden können.

Benutzerdefinierte Fehlerbehandlung

Wenn die standardmäßige Fehlerbehandlung von PHP nicht ausreichend ist, kann man außerdem viele Arten von Fehlern mit einer eigenen Funktion zur Fehlerbehandlung verarbeiten, in dem man diese mittels set_error_handler() einrichtet. Während manche Arten von Fehlern damit nicht verarbeitet werden können, kann ein Skript diejenigen die behandelt werden können damit so behandeln wie es am sinnvollsten erscheint: Beispielsweise kann dies benutzt werden, um dem Benutzer eine angepasste Fehlerseite anzuzeigen und anschließend über den Fehler direkter als nur durch ein Protokoll zu berichten, zum Beispiel durch das Senden einer E-Mail.