Existen diferentes tipos de errores y advertencias en PHP. Son los siguientes:
Tabla 15-1. Tipos de error PHP
Valor | Constante | Descripción | Nota |
---|---|---|---|
1 | E_ERROR | errores fatales en tiempo de ejecución | |
2 | E_WARNING | advertencias en tiempo de ejecución (no errores fatales) | |
4 | E_PARSE | errores fatales en tiempo de compilación | |
8 | E_NOTICE | avisos en tiempo de ejecución (no tan importante como una advertencia) | |
16 | E_CORE_ERROR | errores fatales que ocurren durante el proceso inicial de arranque de PHP | Solo en PHP 4 |
32 | E_CORE_WARNING | advertencias fatales que ocurren durante el proceso inicial de arranque de PHP | Solo en PHP 4 |
64 | E_COMPILE_ERROR | errores fatales en tiempo de compilación | solo en PHP 4 |
128 | E_COMPILE_WARNING | advertencias en tiempo de compilación (no errores fatales) | Solo en PHP 4 |
256 | E_USER_ERROR | mensaje de error generado por el usuario | Solo en PHP 4 |
512 | E_USER_WARNING | mensaje de advertencia generado por el usuario | solo en PHP 4 |
1024 | E_USER_NOTICE | mensaje de aviso generado por el usuario | Solo en PHP 4 |
E_ALL | todos los anteriores, all of the above, según lo soportado |
Los valores indicados arriba (tanto num$eacute;ricos como simbólicos) son usados para crear una máscara de bits (bitmask) que especifica de los errores que hay que informar. Podeis usar los operadores bitwise para combinar estos valores ó aplicar una máscara a ciertos tipos de errores. Tener en cuenta que que solamente '|', '~', '!', y '&' seran interpretados dentro de php.ini y que ningún operador bitwise será interpretado dentro de php3.ini.
En PHP 4, el valor por defecto de error_reporting es E_ALL & ~E_NOTICE, esto siginifica que todos los errores y advertencias que no pertenecen al nivel E_NOTICE, serán presentados cuando ocurran. En PHP 3, el valor por defecto es (E_ERROR | E_WARNING | E_PARSE), teniendo el mismo significado. Tener en cuenta que al no soportar constantes en el fichero de configuración de PHP php3.ini, el valor de error_reporting debe ser numérico, por lo tanto es 7.
La configuración inicial puede cambiarse, en el fichero ini con la directiva error_reporting, en el fichero httpd.conf de Apache con la directiva php_error_reporting (php3_error_reporting en PHP 3) y finalmente en tiempo de ejecución desde el script PHP que se este ejecutando, usando la función error_reporting().
Aviso |
Cuando actualiceis código o servidores de PHP 3 a PHP 4, deberiais comprobar los valores y llamadas a error_reporting() para no deshabilitar los nuevos tipos de mensajes de error, especialmente E_COMPILE_ERROR. Si esto ocurriese podriais obtener documentos vacios sin ningún tipo de mensaje de error ó donde buscar el fallo. |
Todas las expresioness PHP pueden también ser llamadas con el prefijo "@", el cual desactiva el aviso de errores para esa expresión en particular. Si ocurre un error en una expresión en tal situación y la característica track_errors está habilitada, podrás encontrar el mensaje de error en la variable global $php_errormsg.
Nota: El operador de control de errores @ no desactivará mensajes producidos por errores en el parseador.
Aviso |
Actualmente el operador de control de errores @ incluso desactivará mensajes producidos por errores críticos que terminarán la ejecución del script. Entre otras cosas, esto significa que si utilizais @ para suprimir mensajes de error de alguna función, tanto si no está disponible como si contiene algún error, el script quedará interumpido sin ningún tipo de indicación de porque. |
A continuación tenemos un ejemplo de como manejar errores en PHP. Definimos una función de manejo de errores, la cual registra el error en un fichero (usando el formato XML) y manda un e-mail al programador si un error crítico ocurre.
funciones de manejo de errores y registro.Consultar tambien error_reporting(), error_log(), set_error_handler(), restore_error_handler(), trigger_error(), user_error()