Les erreurs peuvent être classifiées selon leur type et leur gravité.

Les erreurs peuvent être susceptibles de provoquer simplement des avertissements sans affecter le programme en cours (WARNING et NOTICE), d'autres entraînent l'interruption définitive du script (ERROR).

Les erreurs sont classifiées selon cinq types différents :

  • les erreurs à l'initialisation (E_CORE_ERROR, E_CORE_WARNING),
  • les erreurs de compilation (E_COMPILE_ERROR, E_COMPILE_WARNING),
  • les erreurs d'analyse syntaxique (E_PARSE),
  • les erreurs d'exécution (E_ERROR, E_WARNING, E_NOTICE),
  • les erreurs utilisateurs (E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE)
Type valeur Description
E_ERROR 1 représente une erreur impossible à corriger. Elle est différente d'une erreur d'analyse.
E_WARNING 2 représente un message d'alerte provoquée par une erreur qui n'interrompt pas le script.
E_PARSE 4 représente une erreur d'analyse dans le domaine syntaxique dont la correction est impossible.
E_NOTICE 8 représente un avertissement ou une erreur n'ayant pas provoqué un arrêt du script.
E_CORE_ERROR 16 représente un avertissement ou une erreur n'ayant pas provoqué un arrêt du script.
E_CORE_WARNING 32 représente un avertissement ou une erreur n'ayant pas provoqué un arrêt du script.
E_COMPILE_ERROR 64 représente une erreur de compilation provoquant l'interruption du script.
E_COMPILE_WARNING 128 représente un message d'avertissement provenant du compilateur sans interrompre le script.
E_USER_ERROR 256 représente une erreur due à l'utilisateur provoquant l'interruption du script.
E_USER_WARNING 512 représente un message d'avertissement dû à l'utilisateur ne provoquant pas l'arrêt du script.
E_USER_NOTICE 1024 représente un message d'avertissement ou une erreur n'ayant pas provoqué l'arrêt du script dû à l'utilisateur.
E_ALL 2047 représente toutes les constantes E_....
E_STRICT 2048 permet d'obtenir des notifications pour la modification du code (Depuis PHP 5).

Les valeurs d'erreur peuvent être combinées dans les fonctions par l'intermédiaire des opérateurs au niveau du bit.

error_reporting (E_ERROR | E_WARNING | E_PARSE);

error_reporting (1 | 2 | 4);

// (0001 | 0010 | 0100 = 0111)2 correspond à (7)10
error_reporting(7);

Le fichier de configuration de PHP 3 php3.ini n'accepte quant à lui qu'une valeur numérique devant l'option error_reporting, puisque les constantes n'y sont pas utilisables, ce qui en revanche, n'est pas le cas pour PHP 4, paramétré par défaut à E_ALL.

[PHP]
error_reporting= E_ALL; #display all errors, warnings and notices