Lidiando con errores en PHP

Independientemente del lenguaje de programación que se utilice, hay una clase de errores que se corresponden con todos. Los veremos en el siguiente párrafo.

Clases de errores fundamentales en Software:

1. Errores internos: Son errores de lógica en tu código. Estos errores pueden evitarse en gran medida mediante una programación cuidadosa.

2. Errores externos: Son errores relacionados con eventos fuera del código. Esto sería: que no abra un archivo o no conecte con una base de datos, que no haya conexión a internet o a la red, que no haya podido cargar un módulo de PHP, etc. No siempre puedes evitar este tipo de errores, pero se puede mitigar su impacto. Cuanto mejor prepares tu código para estos errores externos, menos afectarán negativamente a tu programa.

También hay una forma de encarar estos problemas, que podríamos resumirlos en 4 puntos.

Abordando los problemas

1. Registra o reporta el error: almacena los errores en un archivo de registro y avisa a las personas a medida que aparecen.

2. Visualiza el error: muestra los errores a un desarrollador y/o usuario cuando el programa se esté ejecutando.

3. Actúa sobre el error: ciertos niveles o tipos de errores pueden desencadenar diferentes tareas, como registrar un ticket, enviar un mail o alertar al equipo de soporte.

4. Ignora el error: ¡CUIDADO! Ignorar los errores puede ser muy peligroso y difícil de corregir más adelante, así que trata de evitarlo cuando sea posible.

Niveles de error en PHP

1. Aviso: PHP no te dirá: “Probablemente no deberías estar haciendo lo que estás haciendo, pero te dejaré hacerlo de todas maneras”. Los errores de aviso no detendrán la ejecución de un script. Un ejemplo de aviso sería cuando intenta accede a una variable que no está definida. No es necesario definir una variable antes de acceder a ella, pero es una buena práctica y podría indicar que algo falta.

2. Advertencia: PHP no te dirá: “Estás haciendo algo mal y es muy probable que cause errores en el futuro, así que por favor, corrígelo”. Al igual que con los errores de aviso, los de advertencia no detendrán la ejecución del script. Por ejemplo, intentar incluir un archivo que no está o llamar a una función con un número incorrecto de parámetros, producirá una advertencia.

3. Error fatal: PHP no te dirá: “Estás haciendo algo mal y no sé cómo procesar este script”. Los errores fatales son causados cuando PHP encuentra un error de lógica. Aquí no hay problema con la sintaxis y el script es legible, sin embargo, lo que le pides hacer no puede hacerse.Por ejemplo: dividir por cero, tratar de acceder a una función que no existe, o quedarse sin memoria. El error fatal DETENDRÁ la ejecución del script.

Mostrando los errores

Existen diferentes lugares donde podemos controlar qué tipo de errores se deben informar:

1. En el archivo php.ini

2. En el archivo .htaccess de tu servidor web

3. En tu propio código PHP

Modificaciones en archivo php.ini

1. Mientras tu servidor se esté ejecutando, ve al archivo phpinfo en tu navegador.

2. Busca dentro del texto la cadena de texto “php.ini”. Deberías ver algo como “Configuration file (php.ini)”, donde se indicará en qué carpeta de tu ordenador se encuentra el archivo.

3. Una vez en la carpeta donde esté tu “php.ini” puedes abrir ese archivo con tu editor de texto. Una vez dentro, podemos buscar las siguientes cadenas de texto para habilitar o deshabilitar el aviso de errores:

3.1 “/error_reporting = “ : esto indica qué nivel de errores quieres que se muestren. Para propósitos de desarrollo probablemente querramos dejar todo activado dándole el valor “E_ALL”, quedando así “/error_reporting = E_ALL”.

3.2 “display_errors” : definimos si queremos que los errores se muestren en pantalla o no, poniendo “ON” o “OFF”.

3.3 “log_errors” : indica si debe realizar un registro de errores. Los valores posibles on “ON” o “OFF”.

3.4 “error_log” : establece el nombre de archivo donde deben registrarse los errores, si es que le dijimos que los registre en “log_errors”.

4. Hay algunas configuraciones adicionales que te darán más información y control:

4.1 “display_startup_errors” : para depuración, pudiendo activar los errores que se produzcan la secuencia de inicio de PHP. Acepta los valores “ON” — “OFF”.

4.2 “html_errors” : con esto controlas cómo quieres que los errores se vean. El nuevo formato de errores de HTML produce mensajes que se pueden hacer clic y que dirigen al usuario a una página que describe el error o la función que causa el error. Esto está activado por defecto, pero puedes desactivarlo.

5. Luego de guardar tu archivo, debes reiniciar el servidor para que los cambios surjan efecto.

Nota: este artículo y los tips están basados en lo que estoy aprendiendo en los cursos de Treehouse, lo iré ampliando de a poco.