Cuando ya estamos trabajando en nuestro sistema o página web en PHP podemos necesitar ver los errores que tenemos en el mismo, ya que muchas veces, si no tenemos el registro de errores encendidos, entonces no podremos ver si tenemos algún error como por ejemplo una división entre 0, o acceso a un índice que no existe en un vector.
Muchos de estos errores puede ser que no impacten mucho en nuestro sistema, pero si es un error fatal entonces podría darse el caso de que obtengamos sólo una pantalla en blaco sin saber qué o por qué se está causando.
Pero no sólo es encender los errores de PHP, sobre todo si estamos en producción ya que el usuario o cliente podría estar viendo rutas de archivo así como otra información que no debería o bien al mostrarse los errores podría afectar el funcionamiento de partes del sistema que al estar los errores desactivados si funciona.
Es por ello que cuando estamos desarrollando, deberíamos tener los errores encendidos para que desde ese momento podamos resolverlos y heredar los menores errores posibles a producción.
Cuando estamos en producción, no deberíamos encender los errores ya que para hacer debug en un archivo, estaríamos afectando a todo el sistema, para este caso veremos como encender errores sólo para el archivo que estamos viendo.
El debug en PHP lo podremos realizar con 3 secciones
display_errors
Esta configuración permite configurarse para mostrar u ocultar los errores en pantalla durante el tiempo de ejecución.
En desarrollo debe estar encendido
En producción debe estar apagado
display_startup_errors
Permite configurar si los errores durante el arranque de PHP, se debe tener en cuenta que aunque se tenga display_errors encendido, los errores de arranque no son mostrados, por lo que esta configuración sirve para ello.
En desarrollo debe estar encendido
En producción debe estar apagado
error_reporting
Permite indicar el nivel de notificación de los errores. En PHP existen varios tipos de errores y existe la necesidad de mostrar algunos tipos y otros no en determinadas circunstancias.
Algunos de los valores posibles de error_reporting
E_NOTICE: Notifica sobre posibles errores de código, por ejemplo la utilización de índices de arreglos asociativos sin comillas ($var[nombre) en lugar de que estén entrecomillados ($var[‘nombre’]).
E_STRICT: Muestra mensajes con sugerencias para la compatibilidad hacia adelante en tu código, por ejemplo si se hace un llamado a un método no estático en forma estática. Esto permitirá que nuestro código esté preparado para las futuras versiones.
E_DEPRECATED: Muestra mensaje de error sobre funciones que se han tornado obsolotas en la versión que está corriendo PHP. Es por ello que debemos estar pendiente con las actualizaciones y sus cambios, así como saber qué versión utilizar verificando si las funciones y sentenias que tenemos en nuestro sistema no hayan sido despreciadas en la versión que deseamos usar.
E_WARNING: Muestra ñps errores de tiempo de ejecución pero que no son fatales.
E_ERROR: Muestra los errores fatales.
E_ALL: Muestra todos los errores.
En desarrollo debe tener el valor E_ALL
En producción normalmente se usa E_ALL & ~E_DEPRECATED & ~E_STRICT
Para accesar a estas configuraciones, se hacen a través de la ruta
/etc/php5/apache2/php.ini
Una vez que se haga el cambio, se debe reiniciar el servidor Apache para que los cambios surtan efecto.
sudo service apache2 restart
Hay que tener en mente que el realizar cambios al archivo de configuración, estos surtirán efecto en todo nuestro sistema así como en todas las páginas que estén en nuestro servidor.
Si queremos hacer debug y mostrar los errores sólo en un archivo en específico, o bien, no tenemos acceso al archivo de configuración, entonces podemos seguir los pasos del siguiente post.
Debug en Apache sin modificar el archivo conf
Anterior: Arreglos y matrices en PHP
1 Comentario
Arreglos y matrices en PHP – Angelinux · 16 noviembre, 2016 a las 23:13
[…] Siguiente: Debug con y sin acceso a archivos de sistema en PHP […]