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 Fehlertypen 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_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.