En numerosas ocasiones necesitamos depurar errores de scripts PHP que se encuentran en servidores con la opción de mostrar los errores deshabilitada, lo que nos impide disponer de información del error producido en pantalla.
Esto que en general es recomendable, se convierte en un problema cuando nos topamos con un error en el servidor que no conseguimos reproducir en el entorno de desarrollo, por ello debemos recurrir a algún método que nos permita mostrar en pantalla el error pero sólo en la página que necesitamos depurar.
Para este y otros casos donde necesitamos modificar un parámetro determinado del servidor podemos hacer uso de la función PHP ini_set(). Esta función nos permite modificar parametros del servidor en la ejecución en curso que no se mantienen para siguientes consultas producidas en la navegación.
Para el caso que nos ocupa el parametro que deseamos activar en el servidor es «display_errors» y el valor deseado 1.
En la mayoria de los casos necesitaremos con anterioridad definir que tipo de mensajes de error deseamos mostrar en nuestra página en el proceso de depuración para lo que haremos uso de la función PHP error_reporting(), con el parámetro que mejor se adapte a nuestras necesidades.
Una buena manera de solicitar los errores de la página consistirá en incluir al comienzo de la misma un par de líneas solicitando que se nos muestren todos los errores exceptuando los etiquetados como «Noticias», que normalmente son poco relevantes, como se muestra a continuación:
<?php error_reporting(E_ALL & ~E_NOTICE); ini_set("display_errors", 1); ?>
A continuación se muestra un listado con las opciones disponibles para la consulta de errores clasificados por tipos:
Valor | Etiqueta | Descripción |
---|---|---|
1 | E_ERROR | Errores Fatales en tiempo de ejecución. Éstos indican errores que no se pueden recuperar, tales como un problema de asignación de memoria. La ejecución del script se interrumpe. |
2 | E_WARNING | Advertencias en tiempo de ejecución (errores no fatales). La ejecución del script no se interrumpe. |
4 | E_PARSE | Errores de análisis en tiempo de compilación. Los errores de análisis deberían ser generados únicamente por el analizador. |
8 | E_NOTICE | Avisos en tiempo de ejecución. Indican que el script encontró algo que podría señalar un error, pero que también podría ocurrir en el curso normal al ejecutar un script. |
16 | E_CORE_ERROR | Errores fatales que ocurren durante el arranque incial de PHP. Son como un E_ERROR, excepto que son generados por el núcleo de PHP. |
32 | E_CORE_WARNING | Advertencias (errores no fatales) que ocurren durante el arranque inicial de PHP. Son como un E_WARNING, excepto que son generados por el núcleo de PHP. |
64 | E_COMPILE_ERROR | Errores fatales en tiempo de compilación. Son como un E_ERROR, excepto que son generados por Motor de Script Zend. |
128 | E_COMPILE_WARNING | Advertencias en tiempo de compilación (errores no fatales). Son como un E_WARNING, excepto que son generados por Motor de Script Zend. |
256 | E_USER_ERROR | Mensaje de error generado por el usuario. Es como un E_ERROR, excepto que es generado por código de PHP mediante el uso de la función de PHP trigger_error(). |
512 | E_USER_WARNING | Mensaje de advertencia generado por el usuario. Es como un E_WARNING, excepto que es generado por código de PHP mediante el uso de la función de PHP trigger_error(). |
1024 | E_USER_NOTICE | Mensaje de aviso generado por el usuario. Es como un E_NOTICE, excepto que es generado por código de PHP mediante el uso de la función de PHP trigger_error(). |
2048 | E_STRICT | Habilítelo para que PHP sugiera cambios en su código, lo que asegurará la mejor interoperabilidad y compatibilidad con versiones posteriores de PHP de su código. |
4096 | E_RECOVERABLE_ERROR | Error fatal capturable. Indica que ocurrió un error probablemente peligroso, pero no dejó al Motor en un estado inestable. Si no se captura el error mediante un gestor definido por el usuario (vea también set_error_handler()), la aplicación se abortará como si fuera un E_ERROR. |
8192 | E_DEPRECATED | Avisos en tiempo de ejecución. Habilítelo para recibir avisos sobre código que no funcionará en futuras versiones. |
16384 | E_USER_DEPRECATED | Mensajes de advertencia generados por el usuario. Son como un E_DEPRECATED, excepto que es generado por código de PHP mediante el uso de la función de PHP trigger_error(). |
30719 | E_ALL | Todos los errores y advertencias soportados, excepto del nivel E_STRICT. |