PHP 8.4.2 Released!

Constantes pré-définies

Les constantes listées ici sont toujours disponibles dans PHP.

Les constantes suivantes (soit la valeur numérique correspondante, soit leur nom symbolique) sont utilisées comme un masque de bits pour spécifier les erreurs à signaler. Il est possible d'utiliser les opérateurs binaires pour combiner ces valeurs ou masquer certains types d'erreurs.

Astuce

Les noms des constantes peuvent être utilisés dans php.ini au lieu des valeurs numériques brutes auxquelles elles correspondent. Cependant, seuls les opérateurs |, ~, ^, !, & sont compris dans php.ini.

Avertissement

Il n'est pas possible d'utiliser les noms symboliques en dehors de PHP. Par exemple, dans httpd.conf la valeur calculée du masque de bits doit être utilisée à la place.

E_ERROR (int)
Erreurs fatales lors de l'exécution Celles-ci indiquent des erreurs dont il est impossible de se remettre, comme un problème d'allocation de mémoire. L'exécution du script est arrêtée. Valeur de la constante : 1
E_WARNING (int)
Avertissements lors de l'exécution (erreurs non fatales). L'exécution du script n'est pas interrompue. Valeur de la constante : 2
E_PARSE (int)
Erreurs d'analyse au moment de la compilation. Les erreurs d'analyse devraient uniquement être générées par l'analyseur syntaxique. Valeur de la constante : 4
E_NOTICE (int)
Notifications d'exécution. Indiquent que le script a rencontré quelque chose qui pourrait signaler une erreur, mais qui pourrait aussi se produire normalement lors de l'exécution d'un script. Valeur de la constante : 8
E_CORE_ERROR (int)
Erreurs fatales qui surviennent lors du démarrage initial de PHP. C'est comme une E_ERROR, sauf qu'elle est générée par le cœur de PHP. Valeur de la constante : 16
E_CORE_WARNING (int)
Avertissements (erreurs non fatales) qui surviennent lors du démarrage initial de PHP. C'est comme un E_WARNING, sauf qu'il est généré par le cœur de PHP. Valeur de la constante : 32
E_COMPILE_ERROR (int)
Erreurs fatales de compilation. C'est comme un E_ERROR, sauf qu'il est généré par le moteur de script Zend. Valeur de la constante : 64
E_COMPILE_WARNING (int)
Avertissements de compilation (erreurs non fatales). C'est comme un E_WARNING, sauf qu'il est généré par le moteur de script Zend. Valeur de la constante : 128
E_DEPRECATED (int)
Avis de dépréciation à l'exécution. Activez ceci pour recevoir des avertissements concernant du code qui ne fonctionnera plus dans les futures versions. Valeur de la constante : 8192
E_USER_ERROR (int)
Message d'erreur généré par l'utilisateur. Cela ressemble à un E_ERROR, sauf qu'il est généré dans le code PHP en utilisant la fonction PHP trigger_error(). Valeur de la constante : 256
Avertissement

L'utilisation de cette constante avec trigger_error() est obsolète à partir de PHP 8.4.0. Il est recommandé de soit throw une Exception ou d'appeler exit() à la place.

E_USER_WARNING (int)
Message d'avertissement généré par l'utilisateur. Cela ressemble à un E_NOTICE, sauf qu'il est généré dans le code PHP en utilisant la fonction PHP trigger_error(). Valeur de la constante : 512
E_USER_NOTICE (int)
Message de notification généré par l'utilisateur. Cela ressemble à un E_NOTICE, sauf qu'il est généré dans le code PHP en utilisant la fonction PHP trigger_error(). Valeur de la constante : 1024
E_USER_DEPRECATED (int)
Message de dépréciation généré par l'utilisateur. Cela ressemble à un E_DEPRECATED, sauf qu'il est généré dans le code PHP en utilisant la fonction PHP trigger_error(). Valeur de la constante : 16384
E_STRICT (int)
Suggestions d'exécution émises par PHP concernant le code exécuté pour garantir la compatibilité future. Valeur de la constante : 2048
Avertissement

Ce niveau d'erreur n'est pas utilisé, et a été déprécié à partir de PHP 8.4.0.

E_RECOVERABLE_ERROR (int)
"Exceptions" de l'ancien moteur correspondant à une erreur fatale rattrapable. Semblable à Error mais doit être capturée via un gestionnaire d'erreurs défini par l'utilisateur (voir set_error_handler()). Si elle n'est pas gérée, cela se comporte comme E_ERROR. Valeur de la constante : 4096

Note: Ce niveau d'erreur est effectivement inutilisé, le seul cas où cela peut se produire est lorsque l'interprétation d'un objet en tant que bool échoue. Cela ne peut se produire que pour des objets internes. L'exemple le plus courant, antérieur à PHP 8.4.0, est l'utilisation d'une instance GMP dans une condition.

E_ALL (int)
Masque de bits qui contient toutes les erreurs, avertissements et notifications. Valeur de la constante : 32767
add a note

User Contributed Notes 8 notes

up
24
Andy at Azurite (co uk)
13 years ago
-1 is also semantically meaningless as a bit field, and only works in 2s-complement numeric representations. On a 1s-complement system -1 would not set E_ERROR. On a sign-magnitude system -1 would set nothing at all! (see e.g. http://en.wikipedia.org/wiki/Ones%27_complement)

If you want to set all bits, ~0 is the correct way to do it.

But setting undefined bits could result in undefined behaviour and that means *absolutely anything* could happen :-)
up
23
russthom at fivegulf dot com
12 years ago
[Editor's note: fixed E_COMPILE_* cases that incorrectly returned E_CORE_* strings. Thanks josiebgoode.]

The following code expands on Vlad's code to show all the flags that are set. if not set, a blank line shows.

<?php
$errLvl
= error_reporting();
for (
$i = 0; $i < 15; $i++ ) {
print
FriendlyErrorType($errLvl & pow(2, $i)) . "<br>\\n";
}

function
FriendlyErrorType($type)
{
switch(
$type)
{
case
E_ERROR: // 1 //
return 'E_ERROR';
case
E_WARNING: // 2 //
return 'E_WARNING';
case
E_PARSE: // 4 //
return 'E_PARSE';
case
E_NOTICE: // 8 //
return 'E_NOTICE';
case
E_CORE_ERROR: // 16 //
return 'E_CORE_ERROR';
case
E_CORE_WARNING: // 32 //
return 'E_CORE_WARNING';
case
E_COMPILE_ERROR: // 64 //
return 'E_COMPILE_ERROR';
case
E_COMPILE_WARNING: // 128 //
return 'E_COMPILE_WARNING';
case
E_USER_ERROR: // 256 //
return 'E_USER_ERROR';
case
E_USER_WARNING: // 512 //
return 'E_USER_WARNING';
case
E_USER_NOTICE: // 1024 //
return 'E_USER_NOTICE';
case
E_STRICT: // 2048 //
return 'E_STRICT';
case
E_RECOVERABLE_ERROR: // 4096 //
return 'E_RECOVERABLE_ERROR';
case
E_DEPRECATED: // 8192 //
return 'E_DEPRECATED';
case
E_USER_DEPRECATED: // 16384 //
return 'E_USER_DEPRECATED';
}
return
"";
}
?>
up
15
fadhilinjagi at gmail dot com
3 years ago
A simple and neat way to get the error level from the error code. You can even customize the error level names further.

<?php
$exceptions
= [
E_ERROR => "E_ERROR",
E_WARNING => "E_WARNING",
E_PARSE => "E_PARSE",
E_NOTICE => "E_NOTICE",
E_CORE_ERROR => "E_CORE_ERROR",
E_CORE_WARNING => "E_CORE_WARNING",
E_COMPILE_ERROR => "E_COMPILE_ERROR",
E_COMPILE_WARNING => "E_COMPILE_WARNING",
E_USER_ERROR => "E_USER_ERROR",
E_USER_WARNING => "E_USER_WARNING",
E_USER_NOTICE => "E_USER_NOTICE",
E_STRICT => "E_STRICT",
E_RECOVERABLE_ERROR => "E_RECOVERABLE_ERROR",
E_DEPRECATED => "E_DEPRECATED",
E_USER_DEPRECATED => "E_USER_DEPRECATED",
E_ALL => "E_ALL"
];

echo
$exceptions["1"];
$code = 256;
echo
$exceptions[$code];
?>

Output:
E_ERROR
E_USER_ERROR

This will need updating when PHP updates the error level names. Otherwise, it works just fine.
up
15
bbrokman at gmail dot com
5 years ago
A neat way to have a place in code to control error reporting configuration :)

<?php

$errorsActive
= [
E_ERROR => FALSE,
E_WARNING => TRUE,
E_PARSE => TRUE,
E_NOTICE => TRUE,
E_CORE_ERROR => FALSE,
E_CORE_WARNING => FALSE,
E_COMPILE_ERROR => FALSE,
E_COMPILE_WARNING => FALSE,
E_USER_ERROR => TRUE,
E_USER_WARNING => TRUE,
E_USER_NOTICE => TRUE,
E_STRICT => FALSE,
E_RECOVERABLE_ERROR => TRUE,
E_DEPRECATED => FALSE,
E_USER_DEPRECATED => TRUE,
E_ALL => FALSE,
];

error_reporting(
array_sum(
array_keys($errorsActive, $search = true)
)
);

?>
up
12
cl at viazenetti dot de
7 years ago
An other way to get all PHP errors that are set to be reported. This code will even work, when additional error types are added in future.

<?php
$pot
= 0;
foreach (
array_reverse(str_split(decbin(error_reporting()))) as $bit) {
if (
$bit == 1) {
echo
array_search(pow(2, $pot), get_defined_constants(true)['Core']). "<br>\n";
}
$pot++;
}
?>
up
6
kezzyhko at NOSPAM dot semysha dot ru
8 years ago
As for me, the best way to get error name by int value is that. And it's works fine for me ;)
<?php

array_flip
(array_slice(get_defined_constants(true)['Core'], 1, 15, true))[$type];

//the same in readable form
array_flip(
array_slice(
get_defined_constants(true)['Core'],
1,
15,
true
)
)[
$type]

?>
up
3
kaioker
3 years ago
super simple error code to human readable conversion:

function prettycode($code){
return $code == 0 ? "FATAL" : array_search($code, get_defined_constants(true)['Core']);
}
up
1
ErikBachmann
5 years ago
<?php
function getErrorTypeByValue($type) {
$constants = get_defined_constants(true);

foreach (
$constants['Core'] as $key => $value ) { // Each Core constant
if ( preg_match('/^E_/', $key ) ) { // Check error constants
if ( $type == $value )
return(
"$key=$value");
}
}
}
// getErrorTypeByValue()

echo "[".getErrorTypeByValue( 1 ) . "]". PHP_EOL;
echo
"[".getErrorTypeByValue( 0 ) . "]". PHP_EOL;
echo
"[".getErrorTypeByValue( 8 ) . "]". PHP_EOL;
?>

Will give
[E_ERROR=1]
[]
[E_NOTICE=8]
To Top