Cuando estamos programando una aplicación o proyecto en PHP, este tiene 2 estados: desarrollo y producción.
Cuando programamos en local el proyecto está en desarrollo y la configuración de PHP por defecto, por norma general muestra todos los errores.
Cuando el proyecto está ya publicado en un servidor web en Internet, el proyecto está en producción y la configuración por defecto del PHP no muestra los errores, simplemente cuando ocurre un error puede aparecer una pantalla totalmente en blanco y es aquí cuando necesitamos modificar la configuración de PHP par que nos muestre lo errores y saber que está pasando.
Tabla de contenidos
Tipos de errores en PHP
- Notice: es un aviso que significa “Probablemente no deberías estar haciendo lo que estás haciendo, pero te dejaré hacerlo de todos modos”. Esto no detendrán la ejecución del programa.
- Warning: es una advertencia que significa “Estás haciendo algo mal y seguramente cause errores en el futuro, así que arréglalo”. Esto no detendrán la ejecución del programa.
- Faltal error: son errores que detienen la ejecución de nuestro programa y por la tanto, hay que corregirlos de inmediato.
Mostrar los errores en PHP
Editar el archivo php.ini: hay que editar o añadir en caso de que no este la línea, poniendo:
display_errors = on
El problema de esta opción es que la mayoría de las veces no tenemos acceso a este fichero en el servidor
Editar fichero que se ejecuta
Podemos añadir directamente estas líneas al comienzo del fichero que queremos debugear o mejor crear una función con ellas y llamarla
<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); ?>
La función error_reporting(), puede tener diferentes parámetros que harán que se muestren diferentes tipos de errores.
Error_reporting()
error_reporting(E_ERROR) : muestra sólo los fatal error, no muestra warnings ni notice.
error_reporting(E_ALL ^ E_NOTICE): muestra todos los errores excepto los notice
error_reporting(E_ALL ^ E_WARNING): muestra todos los errores excepto los warnings
error_reporting(E_ALL): muestra todos los errores ( fatal error, notice y warnings)
error_reporting(0): Desactivar toda notificación de error