Introducción: ¿Por qué los desarrolladores temen la pantalla en blanco?
\n\nTodo desarrollador PHP se ha enfrentado al menos una vez a esta situación: el código parece estar bien escrito, pero en lugar del resultado esperado aparece una página vacía. Sin errores, sin advertencias. Solo silencio y sudor frío. ¿Te suena familiar?
\n\nEn Stack Overflow, la pregunta «How do I get PHP errors to display?» acumula miles de visitas y cientos de respuestas. No es casualidad: saber cómo activar y gestionar los errores correctamente es una habilidad básica que ahorra horas de depuración. Pero hay un detalle: una configuración incorrecta no solo puede no ayudar, sino que también puede reducir el rendimiento de tu sitio o, peor aún, exponer vulnerabilidades.
\n\nEn este artículo, analizaremos todas las formas de activar la visualización de errores PHP, desde soluciones rápidas para el desarrollo local hasta configuraciones seguras para un servidor de producción. Y, por supuesto, hablaremos de optimización: cómo no saturar los logs ni ralentizar tu web.
\n\nConceptos básicos: ¿Qué tipos de errores PHP existen?
\n\nAntes de activar la visualización, es útil entender con qué estamos lidiando. PHP genera varios niveles de errores:
\n\n- \n
- E_ERROR — error fatal. El script se detiene. Ejemplo: falta de memoria, llamada a una clase inexistente. \n
- E_WARNING — no fatal. El script continúa, pero algo salió mal. Ejemplo: incluir un archivo que no existe. \n
- E_NOTICE — aviso. Generalmente sobre problemas menores (variable no definida). \n
- E_PARSE — error de sintaxis. Ocurre antes de ejecutar el código, es difícil capturarlo en tiempo de ejecución. \n
- E_ALL — incluye todos los niveles, excepto E_STRICT (antes de PHP 8.0). \n
Recuerda: en la etapa de desarrollo queremos ver todos los errores. En un servidor de producción, solo los críticos, y además en los logs, no en pantalla.
\n\nMétodo n.º 1: Rápido y sencillo — directamente en el código
\n\nEl método más simple para una depuración puntual es añadir dos líneas mágicas al inicio del script:
\n\n<?php\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\n?>\n\n¿Qué ocurre aquí?
\n- \n
display_errors— activa la visualización de errores en pantalla. \n display_startup_errors— muestra errores que ocurren al iniciar PHP (por ejemplo, en php.ini). \n error_reporting(E_ALL)— establece el nivel de reporte: mostrar todo. \n
Este método es ideal para un solo archivo que estás depurando. Pero tiene desventajas: debes recordar eliminar estas líneas antes de subir el código a producción. De lo contrario, corres el riesgo de mostrar las «entrañas» de tu aplicación a los usuarios.
\n\nMétodo n.º 2: Configuración de php.ini — global y permanente
\n\nSi trabajas en tu máquina local o controlas el servidor, es más fácil editar el archivo php.ini. Localiza este archivo (generalmente en /etc/php/ o /usr/local/etc/php/) y modifica las siguientes directivas:
\n\ndisplay_errors = On\ndisplay_startup_errors = On\nerror_reporting = E_ALL\n\nDespués de los cambios, no olvides reiniciar el servidor web:
\nsudo systemctl restart apache2\n# o\nsudo systemctl restart nginx php8.1-fpm\n\nImportante: en un servidor de producción, display_errors debe estar en Off. En su lugar, configura el registro de errores en un archivo:
display_errors = Off\nlog_errors = On\nerror_log = /var/log/php_errors.log\nerror_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT\n\nEsto reduce la carga en la salida y protege los datos del sitio.
\n\nMétodo n.º 3: Mediante .htaccess — para hosting compartido
\n\nSi no tienes acceso a php.ini (por ejemplo, en un hosting barato), usa el archivo .htaccess en la raíz del sitio:
\n\nphp_flag display_errors on\nphp_flag display_startup_errors on\nphp_value error_reporting 32767