«Pantalla blanca de la muerte» en PHP: ¿cómo hacer que los errores hablen?
Cada desarrollador de PHP se ha enfrentado a la situación: el código parece funcionar, pero en la pantalla hay vacío. Sin mensaje, sin advertencia. Solo una hoja blanca y una sensación de leve locura. ¿Le suena familiar? Es la clásica «Pantalla blanca de la muerte» (White Screen of Death — WSOD). La mayoría de las veces el problema es que la salida de errores de PHP está desactivada.
En Stack Overflow, la pregunta «How do I get PHP errors to display?» ha acumulado miles de visitas. Y no es casualidad: configurar la visualización de errores es algo básico que todo desarrollador debe saber. Pero simplemente activar display_errors no es suficiente. Hay que entender cómo afecta esto al rendimiento y la seguridad de su aplicación.
En este artículo analizaremos:
- Cómo activar los errores de PHP en diferentes entornos (local, en el servidor, en frameworks);
- Cómo configurar
error_reportingpara una depuración óptima; - Por qué mostrar errores en producción es una mala idea;
- Cómo registrar errores sin perder rendimiento.
¡Allá vamos!
¿Por qué PHP no muestra errores? Tres razones principales
Antes de meterse en el código, entendamos por qué los errores pueden estar ocultos. PHP es un lenguaje flexible, y su comportamiento depende de la configuración de php.ini, del propio script y del entorno del servidor.
1. Configuración de php.ini
El principal culpable es la directiva display_errors. Por defecto, en muchos alojamientos está configurada en Off. Esto se hace por seguridad: en producción, mostrar al usuario el stack trace es una mala práctica.
2. La función error_reporting()
Incluso si display_errors está activado, el nivel de errores puede ser demasiado bajo. Por ejemplo, error_reporting(0) lo ocultará todo. O puede filtrar accidentalmente los tipos de errores necesarios (E_NOTICE, E_WARNING).
3. Errores antes de la ejecución del script
Los más engañosos son los errores de sintaxis en php.ini o en los archivos incluidos. Si PHP ni siquiera puede ejecutar el script, no llegará a su configuración. En estos casos, ayuda verificar la sintaxis a través de la consola: php -l file.php.
Cómo activar la salida de errores de PHP: guía paso a paso
Método 1. Editar php.ini (configuración permanente)
La forma más fiable es modificar php.ini. Busque el archivo (normalmente está en /etc/php/ o /usr/local/etc/php/) y establezca:
display_errors = Onerror_reporting = E_ALLDespués de los cambios, reinicie el servidor:
sudo service apache2 restart# o para nginx + php-fpm:sudo service php8.1-fpm restartVentajas: la configuración aplica a todos los scripts del servidor.
Desventajas: requiere acceso al servidor; no es adecuado para alojamiento compartido.
Método 2. A través de .htaccess (para Apache)
Si no tiene acceso a php.ini pero tiene Apache, use .htaccess:
php_flag display_errors onphp_value error_reporting 32767 # E_ALLImportante: este método funciona si el servidor tiene habilitada la directiva AllowOverride.
Método 3. Directamente en el script (para depuración)
La opción más flexible es activar los errores en un archivo específico. Ideal para desarrollo:
<?phpini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);
// Su códigoecho $undefined_variable; // Provocará un Notice?>Observe display_startup_errors — captura errores que ocurren antes de la ejecución del script (por ejemplo, al incluir archivos).
Método 4. Especificidad de los frameworks (Laravel, Symfony, WordPress)
Los frameworks modernos tienen sus propios mecanismos. En Laravel
Blogs
Book Recommendations
Leer también
Trabajo con JSON en PHP: análisis y serialización para principiantes
Optionals Implícitamente Desenvueltos: ¿para qué sirven si sabemos el valor?
Generics en C++: para qué sirven y cómo usarlos en la práctica
Programación funcional en PHP: de la A a la Z — guía completa
Principales errores de desarrolladores principiantes de Kotlin: nivel avanzado