A hibáknak és figyelmeztetéseknek PHP-ben számos típusa van. Ezek:
Táblázat 14-1. PHP hiba típusok
érték | szimbólum | leírás | megjegyzés |
---|---|---|---|
1 | E_ERROR | fatális futás-idejű hibák | |
2 | E_WARNING | nem fatális futás-idejű hibák | |
4 | E_PARSE | fordítás-idejű feldolgozási hibák | |
8 | E_NOTICE | futás-idejű figyelmeztetések (a notice a warning-nál gyengébb) | |
16 | E_CORE_ERROR | fatális hibák, amik a PHP elindulásakor lépnek fel | csak a PHP 4-ben |
32 | E_CORE_WARNING | nem fatális hibák figyelmeztetései (warning), amik a PHP elindulásakor lépnek fel | csak a PHP 4-ben |
64 | E_COMPILE_ERROR | fatális fordítás-idejű hibák | csak a PHP 4-ben |
128 | E_COMPILE_WARNING | nem fatális fordítás-idejű figyelmeztetések (warning) | csak a PHP 4-ben |
256 | E_USER_ERROR | felhasználó által generált hibaüzenetek | csak a PHP 4-ben |
512 | E_USER_WARNING | felhasználó által generált figyelmeztetések (warning) | csak a PHP 4-ben |
1024 | E_USER_NOTICE | felhasználó által generált figyelmeztetések (notice) | csak a PHP 4-ben |
E_ALL | az összes fent felsorolt elem | csak 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. |