Logs de error en PHP: guía para depurar tu web eficazmente

logs de error en PHP

📅 Publicado el 9 de octubre, 2026 · Por Equipo RedServicio

Depurar sin logs es como buscar una aguja en un pajar. A ciegas. Cuando algo falla en tu aplicación —una función obsoleta, una consulta a base de datos mal formada, una variable sin definir— los logs de error en PHP registran exactamente qué ocurrió, en qué archivo y en qué línea. Sin ellos, estás revisando código línea por línea esperando tener suerte. Con ellos, el fallo te señala dónde está. En esta guía verás qué son, por qué importan tanto y cómo activarlos en tu servidor, tanto desde el php.ini como desde tu propio código.

¿Qué son los logs de error en PHP y por qué son esenciales?

Sencillo: archivos de texto donde el intérprete de PHP va anotando todos los avisos, advertencias y errores fatales que se producen mientras se ejecutan tus scripts. Cada entrada suele incluir la fecha y hora, el tipo de error, un mensaje descriptivo y la ruta del archivo junto a la línea exacta donde se originó el problema.

PHP distingue varios niveles de error:

  • E_ERROR: errores fatales que detienen la ejecución del script, como llamar a una función inexistente.
  • E_WARNING: advertencias que no detienen la ejecución, por ejemplo, intentar incluir un archivo que no existe.
  • E_NOTICE: avisos menores, como usar una variable sin inicializar.
  • E_DEPRECATED: avisos por usar funciones obsoletas, habituales al migrar entre versiones de PHP.
  • E_ALL: una constante que agrupa todos los niveles anteriores.

¿Por qué son tan importantes? Yo lo resumiría en esto. Primero, permiten diagnosticar problemas antes de que los noten tus usuarios: una advertencia silenciosa hoy puede ser un error fatal mañana, y créeme, suele serlo. También ayudan a detectar actividades sospechosas, porque los atacantes, al explorar vulnerabilidades, generan errores inusuales que quedan registrados. Y aceleran muchísimo el mantenimiento: el log te da la ubicación exacta del fallo en lugar de obligarte a leer el código entero buscando qué se rompió.

Cómo activar el registro de errores desde php.ini

La forma más limpia de configurar todo esto es editando el archivo php.ini, la configuración global de PHP en tu servidor. Si tu hosting lo permite, puedes localizarlo ejecutando un script con la función phpinfo() y buscando la directiva Loaded Configuration File.

Las directivas que debes ajustar:

  1. log_errors = On: activa el registro de errores en un archivo en lugar de mostrarlos en pantalla.
  2. error_log = /ruta/a/tu/php-error.log: define la ubicación del archivo de log. Asegúrate de que PHP tenga permisos de escritura en ese directorio.
  3. error_reporting = E_ALL: indica qué niveles de error se deben registrar.
  4. display_errors = Off: fundamental en producción. Evita que los errores se muestren a los visitantes, algo que podría exponer rutas y datos sensibles de tu servidor.

Una configuración segura para producción sería esta:

log_errors = On
error_log = /var/log/php/error.log
error_reporting = E_ALL
display_errors = Off
log_errors_max_len = 1024

Al guardar los cambios, reinicia el servidor web (Apache o Nginx) para que surtan efecto. Si trabajas con hosting compartido y no tienes acceso al php.ini, no todo está perdido: muchos proveedores permiten sobrescribir estas directivas mediante archivos .user.ini o desde el panel de control. En RedServicio, por ejemplo, puedes gestionar la configuración de PHP directamente desde cPanel y contar con soporte 24/7 si te atascas con estos ajustes.

Configurar logs de error en PHP desde tu código con error_reporting e ini_set

Hay casos en los que tocar el php.ini no es opción —suele pasar en hostings compartidos— y otros en los que simplemente quieres un registro específico para una aplicación concreta. Para eso PHP te da las funciones error_reporting() e ini_set(), que funcionan directamente desde tu código.

Para activar el registro al inicio de tu script, añade algo así:

<?php
// Mostrar errores solo en desarrollo
ini_set(‘display_errors’, 1);
error_reporting(E_ALL);

// O para producción: registrar en archivo sin mostrar nada
ini_set(‘display_errors’, 0);
ini_set(‘log_errors’, 1);
ini_set(‘error_log’, __DIR__ . ‘/mi-app-errors.log’);
error_reporting(E_ALL);
?>

Algunos consejos que en la práctica marcan la diferencia:

  • Coloca estas líneas al principio del script o en el archivo de arranque de tu aplicación, antes de cualquier código que pueda fallar. Si van tarde, los errores previos se te escapan.
  • En desarrollo, activa display_errors para ver los fallos al instante; en producción, desactívalo y confía solo en el log.
  • Puedes ajustar el nivel de detalle con valores combinados, por ejemplo error_reporting(E_ALL & ~E_NOTICE) para omitir los avisos menos críticos.
  • Verifica que el directorio donde apunta error_log exista y tenga permisos de escritura, o PHP no podrá crear el archivo. Es un descuido muy común.

Con estas dos herramientas dominadas, tienes control total sobre qué errores se registran y dónde, sin importar las restricciones de tu entorno de hosting.

Dónde se guardan los logs y cómo leerlos eficazmente

La ubicación de los logs de error en PHP depende del entorno. En servidores Linux con Apache, lo habitual es encontrarlos en /var/log/apache2/error.log o /var/log/httpd/error_log; con Nginx y PHP-FPM suelen estar en /var/log/php-fpm/www-error.log. Y en un hosting compartido, normalmente hay un directorio logs en la raíz de tu cuenta, o al menos algo accesible desde el panel de control.

Para localizar la ruta exacta sin dar vueltas, ejecuta este snippet y revisa el valor de error_log:

  1. Crea un archivo temporal con <?php phpinfo(); ?> y búscalo tras revisarlo, o mejor aún, usa <?php echo ini_get(‘error_log’); ?>.
  2. Accede por SSH o al gestor de archivos de tu panel y abre el archivo indicado.
  3. Usa tail -f /ruta/del/error.log en la terminal para ver los errores en tiempo real mientras reproduces el problema.

Al leer una línea de log, fíjate en tres cosas: la marca de tiempo, el tipo de error y el mensaje con archivo y línea. Por ejemplo:

[12-Mar-2025 09:41:22 Europe/Madrid] PHP Fatal error: Uncaught Error: Call to undefined function wp_stter() in /home/usuario/public_html/wp-content/themes/mitema/functions.php on line 48. Ahí lo tienes todo: qué falló, dónde y cuándo.

Un consejo práctico que aprendí por las malas: filtra por fecha y por nivel de severidad antes de ponerte a revisar línea a línea. Sobre todo si el log acumula meses de historial. Con grep «Fatal error» error.log aislarás los problemas críticos en segundos.

Niveles de error en PHP: qué registrar y qué ignorar en producción

PHP clasifica los errores por severidad, y elegir bien qué registrar marca la diferencia entre un log útil y uno inservible. Estos son los niveles esenciales:

  • E_ERROR y E_PARSE: errores fatales que detienen la ejecución. Siempre deben registrarse.
  • E_WARNING: avisos de problemas que no detienen el script pero suelen anticipar fallos. Regístralos.
  • E_NOTICE: posibles errores de código, como variables sin inicializar. Útiles en desarrollo, demasiado ruidosos en producción.
  • E_DEPRECATED: avisos de funciones obsoletas. Regístralos para planificar actualizaciones de compatibilidad.
  • E_STRICT: sugerencias de buenas prácticas. Puedes desactivarlos en producción.

La configuración recomendada para producción combina estas directivas: error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT, junto con display_errors = Off y log_errors = On. Así el visitante nunca ve detalles internos de tu aplicación, pero tú conservas el rastro completo de cada incidente. Durante el desarrollo, en cambio, activa E_ALL sin excepciones. Cuanto antes caces el problema, menos dolores de cabeza después.

Mejores prácticas y conclusiones para depurar tu web con éxito

Dominar los logs de error en PHP no consiste solo en saber dónde mirar, sino en construir una rutina de depuración sostenible. Estas son las prácticas que, en mi experiencia, más marcan la diferencia:

  • Rota los logs periódicamente con logrotate o herramientas del panel. Si no, acabarán creciendo sin control y comiéndose tu espacio en disco.
  • Nunca muestres errores al visitante: display_errors siempre en Off en producción, tanto por seguridad como por experiencia de usuario.
  • Revisa los logs tras cada actualización de plugins, temas o versiones de PHP; es donde primero aparecen las incompatibilidades.
  • Centraliza la monitorización: para proyectos serios, considera servicios que te alerten por correo o Slack cuando aparece un error fatal.
  • Documenta los errores recurrentes y sus soluciones. Tu yo del futuro te lo agradecerá, de verdad.

En definitiva, los logs son tu mejor aliado para mantener una web estable: convierten errores misteriosos en problemas concretos, con archivo y línea exactos. Configura bien error_reporting y error_log, revisa las entradas con regularidad y actúa antes de que un aviso menor se convierta en un fatal error. ¿Y si prefieres no complicarte con configuraciones de servidor? En RedServicio ofrecemos hosting con registros de error accesibles desde el panel, versiones de PHP actualizables en un clic y soporte 24/7 que te ayuda a interpretar cualquier log cuando más lo necesitas. Una web bien depurada es una web que fideliza.

📝

Equipo RedServicio

Artículos escritos y revisados por nuestro equipo técnico especializado en hosting e infraestructura web en España.

¿Listo para un hosting de verdad?

Servidores en España · Soporte 24/7 en español · Migración gratuita

Ver Planes desde 3,95€/mes →

Te puede interesar:

Página Gratis — Crea tu web gratis

Clisec — Seguridad informática

Scroll al inicio