14. Fejezet. Hibakezelés

A hibáknak és figyelmeztetéseknek PHP-ben számos típusa van. Ezek:

Táblázat 14-1. PHP hiba típusok

értékszimbólumleírásmegjegyzés
1E_ERRORfatális futás-idejű hibák 
2E_WARNINGnem fatális futás-idejű hibák 
4E_PARSEfordítás-idejű feldolgozási hibák 
8E_NOTICEfutás-idejű figyelmeztetések (a notice a warning-nál gyengébb) 
16E_CORE_ERRORfatális hibák, amik a PHP elindulásakor lépnek felcsak a PHP 4-ben
32E_CORE_WARNINGnem fatális hibák figyelmeztetései (warning), amik a PHP elindulásakor lépnek felcsak a PHP 4-ben
64E_COMPILE_ERRORfatális fordítás-idejű hibákcsak a PHP 4-ben
128E_COMPILE_WARNINGnem fatális fordítás-idejű figyelmeztetések (warning)csak a PHP 4-ben
256E_USER_ERRORfelhasználó által generált hibaüzenetekcsak a PHP 4-ben
512E_USER_WARNINGfelhasználó által generált figyelmeztetések (warning)csak a PHP 4-ben
1024E_USER_NOTICEfelhasználó által generált figyelmeztetések (notice)csak a PHP 4-ben
 E_ALLaz összes fent felsorolt elemcsak a PHP 4-ben

A fenti értékek (akár a numerikusak, akár a szimbolikusak) arra használhatóak, hogy felépíts egy bitmask-ot, ami megadja, hogy mely hibákat kell jeleznie a PHP-nek. Használhatod a '|','&' és '~' bitszintű operátorokat, hogy összeállítsd a fenti elemekből a neked megfelelő értéket, vagy letilts egyes hibákat. Alapbeállításban a 'notice' figyelmeztetéseken kívül minden hibajelentés aktív, ami a E_ALL & ~E_NOTICE kifejezésnek felel meg a PHP4-ben és 7 a PHP3-ban, ugyanis a PHP3 nem támogatja a szimbolikus jelöléseket.

Ezek a beállítások az ini file error_reporting direktívájával változtathatóak meg, vagy az Apache http.conf file-ban a php_error_reporting (php3_error_reporting PHP3 esetén) direktívával vagy végül futásidőben egy scriptben az error_reporting() függvénnyel.

Figyelem

Ha a kódod vagy a szervered frissíted PHP3-ról PHP4-re, jól teszed, ha ellenőrzöd ezeket a beállításokat és az error_reporting() függvényhívásokat, különben akaratlanul kikapcsolod az új hibatípusokat, különösen az E_COMPILE_ERROR-t. Ez üres dokumentumokhoz vezethet, amik nem tartalmaznak semmilyen utalást arra, hogy mi történt, vagy hogy hol kellene keresni a problémát...

Minden PHP kifejezés írható a "@" előtaggal, ami kikapcsolja a hibajelentést arra a kifejezésre. Ha hiba lép fel a kifejezés kiértékelésekor, és a track_errors szolgáltatás be van kapcsolva, a hibaüzenet megtalálható a $php_errormsg globális változóban.

Figyelem

Jelenleg a "@" prefix az olyan kritikus hibák jelzését is megszünteti, amik megállítják a script futását.