Errores PHP: cómo activar la visualización de errores (sin ralentizar tu web)

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué los desarrolladores temen la pantalla en blanco?

\n\n

Todo 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\n

En 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\n

En 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\n

Conceptos básicos: ¿Qué tipos de errores PHP existen?

\n\n

Antes 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
\n\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\n

Método n.º 1: Rápido y sencillo — directamente en el código

\n\n

El 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
\n\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\n

Método n.º 2: Configuración de php.ini — global y permanente

\n\n

Si 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\n
display_errors = On\ndisplay_startup_errors = On\nerror_reporting = E_ALL
\n\n

Después de los cambios, no olvides reiniciar el servidor web:

\n
sudo systemctl restart apache2\n# o\nsudo systemctl restart nginx php8.1-fpm
\n\n

Importante: en un servidor de producción, display_errors debe estar en Off. En su lugar, configura el registro de errores en un archivo:

\n\n
display_errors = Off\nlog_errors = On\nerror_log = /var/log/php_errors.log\nerror_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
\n\n

Esto reduce la carga en la salida y protege los datos del sitio.

\n\n

Método n.º 3: Mediante .htaccess — para hosting compartido

\n\n

Si no tienes acceso a php.ini (por ejemplo, en un hosting barato), usa el archivo .htaccess en la raíz del sitio:

\n\n
php_flag display_errors on\nphp_flag display_startup_errors on\nphp_value error_reporting 32767

Blogs

Book Recommendations