«¡PHP muestra una pantalla en blanco y necesito errores!» — ¿Una situación familiar?
Escribes código en PHP, ejecutas el script y, en lugar de un resultado, obtienes un vacío. O, peor aún, un error extraño sin la más mínima pista sobre la causa. ¿Te suena? Si alguna vez te has preguntado «How can I get useful error messages in PHP?» — no estás solo. Esta pregunta en Stack Overflow ha acumulado miles de visitas, y no es casualidad. PHP está configurado por defecto para ocultar errores en servidores de producción, pero en la etapa de desarrollo esto se convierte en un verdadero dolor de cabeza.
En este artículo, analizaremos todas las formas de hacer que PHP hable contigo en un lenguaje comprensible. Aprenderás cómo activar la visualización de errores, configurar su nivel de detalle y registrarlos, para que la depuración deje de ser una adivinanza. ¡Allá vamos!
¿Por qué PHP calla? La raíz del mal: la configuración del servidor
Antes de aprender a obtener mensajes útiles, comprendamos por qué no están. PHP es un lenguaje con una filosofía de seguridad estricta. En servidores de producción, mostrar errores a los usuarios es de mal gusto y una amenaza para la seguridad. Por lo tanto, en php.ini (el archivo de configuración principal de PHP) están establecidas por defecto las siguientes opciones:
display_errors = Off— los errores no se muestran en pantalla.error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT— no se muestran todos los tipos de errores.
Pero para el desarrollo local esto es un desastre. ¿Cómo solucionarlo? Hay tres caminos principales.
Método 1: Modificar php.ini (si tienes acceso)
La forma más fiable es editar el archivo php.ini. Encuéntralo (normalmente está en la raíz de la instalación de PHP o en la carpeta etc/ en Linux). Luego, busca y modifica las siguientes líneas:
; Activamos la salida de errores en pantalladisplay_errors = On
; Establecemos el nivel máximo de reporte (todos los errores, excepto avisos de obsolescencia)error_reporting = E_ALLDespués de los cambios, asegúrate de reiniciar el servidor web (Apache, Nginx o el servidor PHP integrado), de lo contrario, la configuración no se aplicará.
Importante: En un servidor de producción, display_errors siempre debe estar en Off. Usa este método solo para desarrollo.
Método 2: Usar .htaccess (para Apache)
Si no tienes acceso a php.ini, pero usas Apache, puedes sobrescribir la configuración a través del archivo .htaccess en la raíz de tu sitio. Añade lo siguiente:
php_flag display_errors onphp_value error_reporting E_ALLEsto funcionará si Apache permite la sobrescritura de directivas PHP (normalmente es así en la mayoría de los alojamientos).
Método 3: Activar errores directamente en el código (el más flexible)
Este es mi método favorito para una depuración rápida. Puedes insertar estas líneas al inicio del script (justo después de <?php):
<?php// Activamos el nivel máximo de reporte de erroreserror_reporting(E_ALL);
// Activamos la salida de errores en pantallaini_set('display_errors', 1);
// Activamos la salida de errores de inicio (por ejemplo, si hay un error en el propio ini_set)ini_set('display_startup_errors', 1);?>Ahora cualquier Warning, Notice o Fatal Error se mostrará directamente en el navegador. Práctico, ¿verdad?
¿Qué tipos de errores existen en PHP y qué significan?
Para leer las «señales» de PHP, necesitas conocer su idioma. Estos son los tipos principales de errores que verás con más frecuencia:
- E_ERROR — error fatal. El script se detiene. Ejemplo: llamar a una función inexistente.
- E_WARNING — advertencia. El script continúa, pero algo salió mal. Ejemplo:
include()de un archivo inexistente. - E_NOTICE — aviso. No es un error, pero es un problema potencial. Ejemplo: uso de una variable no definida.<