Constantes predefinidas

Estas constantes están disponibles siempre ya que forman parte del núcleo de PHP.

Las constantes siguientes (ya sea el valor numérico correspondiente, o su nombre simbólico) se utilizan como una máscara de bits para especificar los errores a reportar. Es posible utilizar los operadores a nivel de bits para combinar estos valores o enmascarar ciertos tipos de errores.

Sugerencia

Los nombres de las constantes pueden ser utilizados en php.ini en lugar de los valores numéricos brutos a los que corresponden. Sin embargo, solo los operadores |, ~, ^, !, & son comprendidos en php.ini.

Advertencia

No es posible utilizar los nombres simbólicos fuera de PHP. Por ejemplo, en httpd.conf el valor calculado de la máscara de bits debe ser utilizado en su lugar.

E_ERROR (int)
Errores fatales durante la ejecución Estos indican errores de los cuales no es posible recuperarse, como un problema de asignación de memoria. La ejecución del script es detenida. Valor de la constante: 1
E_WARNING (int)
Advertencias durante la ejecución (errores no fatales). La ejecución del script no es interrumpida. Valor de la constante: 2
E_PARSE (int)
Errores de análisis durante la compilación. Los errores de análisis deberían ser generados únicamente por el analizador sintáctico. Valor de la constante: 4
E_NOTICE (int)
Notificaciones de ejecución. Indican que el script ha encontrado algo que podría señalar un error, pero que también podría ocurrir normalmente durante la ejecución de un script. Valor de la constante: 8
E_CORE_ERROR (int)
Errores fatales que ocurren durante el inicio inicial de PHP. Es como una E_ERROR, excepto que es generada por el núcleo de PHP. Valor de la constante: 16
E_CORE_WARNING (int)
Advertencias (errores no fatales) que ocurren durante el inicio inicial de PHP. Es como un E_WARNING, excepto que es generada por el núcleo de PHP. Valor de la constante: 32
E_COMPILE_ERROR (int)
Errores fatales de compilación. Es como un E_ERROR, excepto que es generado por el motor de script Zend. Valor de la constante: 64
E_COMPILE_WARNING (int)
Advertencias de compilación (errores no fatales). Es como un E_WARNING, excepto que es generado por el motor de script Zend. Valor de la constante: 128
E_DEPRECATED (int)
Avisos de depreciación durante la ejecución. Actívelo para recibir advertencias sobre código que no funcionará en versiones futuras. Valor de la constante: 8192
E_USER_ERROR (int)
Mensaje de error generado por el usuario. Esto se asemeja a un E_ERROR, excepto que es generado en el código PHP utilizando la función PHP trigger_error(). Valor de la constante: 256
Advertencia

El uso de esta constante con trigger_error() está obsoleto a partir de PHP 8.4.0. Se recomienda lanzar una Exception o llamar a exit() en su lugar.

E_USER_WARNING (int)
Mensaje de advertencia generado por el usuario. Esto se asemeja a un E_NOTICE, excepto que es generado en el código PHP utilizando la función PHP trigger_error(). Valor de la constante: 512
E_USER_NOTICE (int)
Mensaje de notificación generado por el usuario. Esto se asemeja a un E_NOTICE, excepto que es generado en el código PHP utilizando la función PHP trigger_error(). Valor de la constante: 1024
E_USER_DEPRECATED (int)
Mensaje de depreciación generado por el usuario. Esto se asemeja a un E_DEPRECATED, excepto que es generado en el código PHP utilizando la función PHP trigger_error(). Valor de la constante: 16384
E_STRICT (int)
Sugerencias de ejecución emitidas por PHP sobre el código ejecutado para garantizar la compatibilidad futura. Valor de la constante: 2048
Advertencia

Este nivel de error no es utilizado, y ha sido depreciado a partir de PHP 8.4.0.

E_RECOVERABLE_ERROR (int)
"Excepciones" del motor antiguo correspondientes a un error fatal recuperable. Similar a Error pero debe ser capturado mediante un manejador de errores definido por el usuario (ver set_error_handler()). Si no es gestionado, se comporta como E_ERROR. Valor de la constante: 4096

Nota: Este nivel de error está efectivamente inutilizado, el único caso en el que puede ocurrir es cuando la interpretación de un object como bool falla. Esto solo puede ocurrir para objetos internos. El ejemplo más común, anterior a PHP 8.4.0, es el uso de una instancia GMP en una condición.

E_ALL (int)
Máscara de bits que contiene todos los errores, advertencias y notificaciones. Valor de la constante: 30719
Advertencia

Anterior a PHP 8.4, el valor de la constante era 32767.

add a note

User Contributed Notes 8 notes

up
23
Andy at Azurite (co uk)
14 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
15
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
18
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
13
bbrokman at gmail dot com
6 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
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
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
2
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
6 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