Er zijn verschillende types fouten en waarschuwingen in PHP, namelijk:
Tabel 15-1. PHP fout types
Waarde | Constante | Omschrijving | Opmerking |
---|---|---|---|
1 | E_ERROR | fatale run-time fouten | |
2 | E_WARNING | run-time waarschuwingen (niet fatale fouten) | |
4 | E_PARSE | compile-time parse errors | |
8 | E_NOTICE | run-time opmerkingen (minder belangrijk dan waarschuwingen) | |
16 | E_CORE_ERROR | fatale fouten die gebeuren terwijl PHP opstart | alleen in PHP 4 |
32 | E_CORE_WARNING | waarschuwingen (niet fatale fouten) die gegeven worden terwijl PHP opstart | alleen in PHP 4 |
64 | E_COMPILE_ERROR | fatale compile-time fout | alleen in PHP 4 |
128 | E_COMPILE_WARNING | compile-time waarschuwingen (niet fatale fouten) | alleen in PHP 4 |
256 | E_USER_ERROR | user-generated error message | PHP 4 only |
512 | E_USER_WARNING | door de gebruiker gegenereerde waarschuwing | alleen in PHP 4 |
1024 | E_USER_NOTICE | door de gebruiker gegenereerde opmerking | alleen in PHP 4 |
E_ALL | alle bovenstaande, indien ondersteunt |
De bovenstaande waarden (zowel numeriek of symbolisch) worden gebruikt om een bitmask te maken dat aangeeft welke errors er gemeld moeten worden. Je kunt bitwise operators gebruiken om waarden toe te voegen ofwel te verwijderen uit het bitmask. Let op: alleen '|', '~', '!' en '&' worden ondersteund in php.ini, maar er worden helemaal geen bitwise operatoren ondersteund in php3.ini
In PHP 4 is de standaard error_reporting instelling E_ALL & ~E_NOTICE. Dit betekend dat alle foutmeldingen/waarschuwingen gemeld worden tenzij deze een E_NOTICE is. In PHP 3 is de standaard instelling (E_ERROR | E_WARNING | E_PARSE), wat precies hetzelfde betekend. Let op: gezien het feit dat constanten niet ondersteund worden in PHP 3's php3.ini de error_reporting, moet de instelling numeriek of wel 7 zijn.
De standaard instelling kan worden veranderd in het .ini bestand met het error_reporting directive, in je Apache httpd.conf bestand kan dit gedaan worden met het php_error_reporting (php3_error_reporting for PHP3) directive en als laatste kan het ook run-time gewijzigd worden met de error_reporting() functie.
Waarschuwing |
Als je code of servers upgrade van PHP 3 naar PHP 4 moet je controleren of deze instellingen en/of aanroepen naar de error_reporting() juist zijn. Als je dit niet doet dan kan het zijn dat belangrijke nieuwe fout types zoals E_COMPILE_ERROR niet gebruikt kunnen worden. Dit kan leiden tot een leeg resultaat document zonder enige informatie over wat er fout is gegegaan. |
Alle PHP expressies kunnen aangeroepen met de '@' prefix. Dit zorgt er voor dat mocht er een fout optreden in deze expressie deze niet gemeld word. Als er een fout optreedt in een expressie en de track_errors mogelijkheid word gebruikt, kun je de foutmelding in de globale variable $php_errormsg.
Waarschuwing |
Op het moment meld de @ error-control operator prefix zelfs geen fatale fouten die het script beëindigen. Dit betekent onder andere dat als je @ gebruikt om foutmeldingen te onderdrukken op een functie die niet bestaat of fout getypt is, het script zal stoppen zonder enige indicatie van waarom het misgegaan is. |
Hieronder staat een voorbeeld over hoe je de error handling mogelijkheden in PHP kunt gebruiken. We definieëren een error handling functie die fout informatie naar een bestand logt gebruik makend van een XML formaat. Mocht er een kritieke fout optreden dan wordt de ontwikkelaar een emailtje gestuurd.
Error Handling en Logging functies kan gebruiken.Zie ook: error_reporting(), error_log(), set_error_handler(), restore_error_handler(), trigger_error(), user_error()