Debug con y sin acceso a archivos de sistema en PHP

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

Author: angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana.
Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

1 thought on “Debug con y sin acceso a archivos de sistema en PHP

  1. Pingback:Arreglos y matrices en PHP – Angelinux

Deja un comentario