Estas son funciones que trabajan en la gesti贸n de errores y registros. Le permiten definir sus propias reglas de gesti贸n de errores, asi como modificar el modo en que los errores son registrados. Esto le permite modificar y mejorar el reporte de errores para que se adapte a sus necesidades.
Con las funciones de registro, puede enviar mensajes directamente a otras m谩quinas, a un correo electr贸nico (隆o correo electr贸nico a una puerta de enlace con un buscapersonas!), a bit谩coras del sistema, etc., de modo que puede registrar y monitorear selectivamente las partes m谩s importantes de sus aplicaciones y sitios web.
Las funciones de reporte de errores le permiten personalizar el nivel y tipo de retroalimentaci贸n de errores que PHP entrega, desde noticias simples a funciones personalizadas devueltas durante los errores.
No se necesitan bibliotecas externas para construir esta extensi贸n
No se necesita ninguna instalaci贸n para usar estas funciones, son parte del n煤cleo de PHP.
El comportamiento de estas funciones est谩 afectado por los valores definidos en php.ini.
Tabla 1. Opciones de Configuraci贸n de Errores y Registro
| Nombre | Por defecto | Modificable | Cambios |
|---|---|---|---|
| error_reporting | NULL | PHP_INI_ALL | |
| display_errors | "1" | PHP_INI_ALL | |
| display_startup_errors | "0" | PHP_INI_ALL | Disponible desde PHP 4.0.3. |
| log_errors | "0" | PHP_INI_ALL | |
| log_errors_max_len | "1024" | PHP_INI_ALL | Disponible desde PHP 4.3.0. |
| ignore_repeated_errors | "0" | PHP_INI_ALL | Disponible desde PHP 4.3.0. |
| ignore_repeated_source | "0" | PHP_INI_ALL | Disponible desde PHP 4.3.0. |
| report_memleaks | "1" | PHP_INI_ALL | Disponible desde PHP 4.3.0. |
| track_errors | "0" | PHP_INI_ALL | |
| html_errors | "1" | PHP_INI_ALL | PHP_INI_SYSTEM en PHP <= 4.2.3. Disponible desde PHP 4.0.2. |
| docref_root | "" | PHP_INI_ALL | Disponible desde PHP 4.3.0. |
| docref_ext | "" | PHP_INI_ALL | Disponible desde PHP 4.3.2. |
| error_prepend_string | NULL | PHP_INI_ALL | |
| error_append_string | NULL | PHP_INI_ALL | |
| error_log | NULL | PHP_INI_ALL | |
| warn_plus_overloading | NULL | PHP_INI?? |
A continuaci贸n se presenta una corta explicaci贸n de las directivas de configuraci贸n.
Establece el nivel de reporte de errores. Este par谩metro es, o bien un entero que representa un campo de bit, o constantes con nombre. Los niveles de error_reporting y las constantes est谩n descritas en Constantes Predefinidas, y en php.ini. Para definir este valor en tiempo de ejecuci贸n, use la funci贸n error_reporting(). Vea tambi茅n la directiva display_errors.
En PHP 4 y PHP 5, el valor predeterminado es E_ALL & ~E_NOTICE. Este valor no muestra errores de nivel E_NOTICE. Puede que usted quiera mostrarlos durante su actividad de desarrollo.
Nota: Al habilitar E_NOTICE durante el desarrollo de software tiene algunos beneficios. Para prop贸sitos de depuraci贸n: los mensajes NOTICE le advertir谩n sobre posibles fallos en su c贸digo. Por ejemplo, se le advertir谩 sobre el uso de valores no-asignados. Es extremadamente 煤til para encontrar errores ortogr谩ficos y ahorrar tiempo de depuraci贸n. Los mensajes NOTICE le advertir谩n sobre el uso de un estilo incorrecto. Por ejemplo, $matriz[item] est谩 mejor escrito como $matriz['item'] ya que PHP intenta darle a "item" un tratamiento de constante. Si no es una constante, PHP asume que es un 铆ndice de tipo cadena para la matriz.
Nota: En PHP 5, un nuevo nivel de error, E_STRICT, se encuentra disponible. Dado que E_STRICT no se incluye en E_ALL, usted debe habilitar expl铆citamente este tipo de nivel de error. Habilitar E_STRICT durante el desarrollo tiene algunos beneficios. Los mensajes STRICT le ayudar谩n a usar los 煤ltimos y m谩s grandiosos m茅todos sugeridos para escribir c贸digo, por ejemplo, le advertir谩 sobre el uso de funciones obsoletas.
En PHP 3, el valor por defecto es (E_ERROR | E_WARNING | E_PARSE), lo que en la pr谩ctica representa lo mismo. Note, sin embargo, que dado que las constantes en el archivo php3.ini de PHP 3 no son soportadas, el valor de error_reporting all铆 debe ser num茅rico; por lo tanto, es 7.
Este par谩metro determina si los errores deben ser puestos en pantalla como parte de la salida o si deben ser ocultados al usuario.
Nota: Es una caracter铆stica de apoyo para su proceso de desarrollo y no deber铆a ser usada nunca en sistemas en producci贸n (p.ej. sistemas conectados a internet).
Nota: Aunque display_errors puede ser definido en tiempo de ejecuci贸n (con ini_set()), no tendr谩 ning煤n efecto si el script contiene errores fatales. Esto se debe a que la acci贸n de tiempo de ejecuci贸n deseada no se alcanza a ejecutar.
Aun cuando display_errors est茅 encendido, los errores que ocurren durante la secuencia de arranque de PHP no son desplegados. Es muy recomendable mantener display_startup_errors apagado, excepto en tiempos de depuraci贸n.
Indica si los mensajes de error de un script deben ser registrados en la bit谩cora de errores del servidor o error_log. Esta opci贸n es por lo tanto espoc铆fica al servidor.
Nota: Es altamente recomendable que use registro de errores en lugar de despliegue de errores en sitios web en producci贸n.
Establece la longitud m谩xima de log_errors en bytes. En error_log se a帽ade informaci贸n sobre la fuente. El valor por defecto es 1024, y un valor de 0 permite que no se aplique ninguna longitud m谩xima en absoluto. Esta longitud se aplica tambi茅n a los errores almacenados en el registro, a los errores que se despliegan y a $php_errormsg.
Cuando se usa un n煤mero entero, el valor del mismo es medido en bytes. Tambi茅n se puede usar la notaci贸n reducida tal como se describe en esta FAQ.
No registrar mensajes repetidos. Los errores repetidos deben ocurrir en el mismo archivo, en la misma l铆nea hasta que el par谩metro ignore_repeated_source sea establecido como true.
Ignorar la fuente de mensaje cuando se ignoran los mensajes repetidos. Cuando este par谩metro est谩 encendido, no se registrar谩 errores con mensajes repetidos desde diferentes fuentes de archivos.
Si este par谩metro est谩 apagado, entonces las fugas de memoria no ser谩n mostradas (en stdout o en el registro). Este valor s贸lo tiene efecto en una compilaci贸n de depuraci贸n, y si error_reporting incluye E_WARNING en la lista permitida.
Cuando est谩 habilitado, el 煤ltimo mensaje de error estar谩 siempre presente en la variable $php_errormsg.
Permite deshabilitar las etiquetas HTML en los mensajes de error. El nuevo formato para los errores en HTML produce mensajes con enlaces que dirigen al usuario a una p谩gina que describe el error o funci贸n que ha causado el error. Estas referencias son afectadas por docref_root y docref_ext.
El nuevo formato de error contiene una referencia hacia una p谩gina que describe el error o la funci贸n que ha causado el error. En el caso de p谩ginas de un manual, usted puede descargar el manual en su idioma y establecer esta directiva ini como la URL de su copia local. Si su copia local del manual puede encontrarse bajo '/manual/' entonces puede usar simplemente docref_root=/manual/. Adicionalmente debe establecer un valor de docref_ext que coincida con las extensiones de archivo de su copia; docref_ext=.html. Es posible usar referencias externas. Por ejemplo, puede usar docref_root=http://manual/en/ o docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F".
Por lo general usted querr谩 que el valor de docref_root finalice con una barra '/'. Pero observe el segundo ejemplo mencionado anteriormente, el cual no tiene una barra final, ni la necesita.
Nota: Esta es una caracter铆stica de apoyo para su desarrollo ya que permite consultar la descripci贸n de una funci贸n f谩cilmente. Sin embargo, nunca debe ser utilizada en sistemas en producci贸n (p.ej. sistema conectados a internet).
Vea docref_root.
Nota: El valor de docref_ext debe comenzar con un punto '.'.
Cadena a mostrar antes de un mensaje de error.
Cadena a mostrar despu茅s de un mensaje de error.
Nombre del archivo en donde deber铆an registrarse los errores del script. El archivo debe tener permisos de escritura para el usuario del servidor web. Si se utiliza el valor especial syslog, los errores son enviados al gestor de registros del sistema. En Unix, esto quiere decir syslog(3) y en Windows NT quiere decir el "event log". El gestor de registro de actividades no est谩 soportado bajo Windows 95. Vea tambi茅n: syslog().
Si se habilita, esta opci贸n hace que PHP genere una advertencia cuando se utilice un operador m谩s (+) con cadenas. Esto facilita la labor de encontrar scripts que necesitan ser reescritos para hacer uso del concatenador de cadenas en su lugar (.). Esta opci贸n no existe a partir de PHP 4.
Las constantes listadas aqui est谩n siempre disponibles a trav茅s del "n煤cleo PHP".
Nota: Es posible usar estos nombres de constantes en php.ini pero no por fuera de PHP, como en httpd.conf, en donde deber铆a usar los valores de m谩scara de bits en su lugar.
Tabla 2. Errores y Registro
| Valor | Constante | Descripci贸n | Nota |
|---|---|---|---|
| 1 | E_ERROR (integer) | Errores fatales en tiempo de ejecuci贸n. Estos indican errores de los que no es posible recuperarse, tales como problemas de asignaci贸n de memoria. Se detiene la ejecuci贸n del script. | |
| 2 | E_WARNING (integer) | Advertencias en tiempo de ejecuci贸n (errores no-fatales). La ejecuci贸n del script no se interrumpe. | |
| 4 | E_PARSE (integer) | Errores de int茅rprete en tiempo de compilaci贸n. Esto tipo de errores deber铆an ser generados 煤nicamente por el interprete. | |
| 8 | E_NOTICE (integer) | Anotaciones en tiempo de ejecuci贸n. Indican que el script se ha topado con algo que puede indicar la presencia de un error, pero que tambi茅n podr铆a ocurrir en el curso normal de la ejecuci贸n de un script. | |
| 16 | E_CORE_ERROR (integer) | Errores fatales que ocurren durante el arranque inicial de PHP. Es como un E_ERROR, excepto que es generado por el n煤cleo de PHP. | a partir de PHP 4 |
| 32 | E_CORE_WARNING (integer) | Advertencias (errores no-fatales) que ocurren durante el arranque inicial de PHP. Es como un E_WARNING, excepto que es generado por el n煤cleo de PHP. | a partir de PHP 4 |
| 64 | E_COMPILE_ERROR (integer) | Errores fatales en tiempo de compilaci贸n. Es como un E_ERROR, excepto que es generado por el Motor de Scripting de Zend. | a partir de PHP 4 |
| 128 | E_COMPILE_WARNING (integer) | Advertencias en tiempo de compilaci贸n (errores no fatales). Es como un E_WARNING, excepto que es generado por el Motor de Scripting de Zend. | a partir de PHP 4 |
| 256 | E_USER_ERROR (integer) | Mensaje de error generado por el usuario. Es como un E_ERROR, excepto que es generado desde c贸digo PHP usando la funci贸n trigger_error(). | a partir de PHP 4 |
| 512 | E_USER_WARNING (integer) | Mensaje de advertencia generado por el usuario. Es como un E_WARNING, excepto que es generado desde c贸digo PHP usando la funci贸n trigger_error(). | a partir de PHP 4 |
| 1024 | E_USER_NOTICE (integer) | Anotaci贸n generada por el usuario. Es como un E_NOTICE, excepto que es generado desde c贸digo PHP usando la funci贸n trigger_error(). | a partir de PHP 4 |
| 2047 | E_ALL (integer) | Todos los errores y advertencias, en la medida en que sean soportados, excepto por el nivel E_STRICT. | |
| 2048 | E_STRICT (integer) | Noticias de tiempo de ejecuci贸n. Habilite este valor para hacer que PHP sugiera cambios en su c贸digo que velar谩n por la mejor interoperabilidad y por mantener la compatibilidad de su c贸digo. | a partir de PHP 5 |
Los valores referidos anteriormente (ya sean num茅ricos o simb贸licos) son usados para construir una m谩scara de bits que indica cu谩les errores reportar. Puede usar los operadores bit a bit para combinar estos valores o excluir expl铆citamente ciertos tipos de errores. Sin embargo, note que 煤nicamente '|', '~', '!', '^' y '&' ser谩n entendidos desde php.ini, y que ning煤n operador bit a bit ser谩 interpretado correctamente desde php3.ini.
A continuaci贸n podemos apreciar un ejemplo del uso de las capacidades de gesti贸n de errores que vienen con PHP. Definimos una funci贸n de manipulaci贸n de errores que registra la informaci贸n en un archivo (usando un formato XML), y env铆a un correo electr贸nico al desarrollador en caso de que un error cr铆tico en la l贸gica del software ocurra.
Vea tambi茅n syslog().