Pulsa ESC para cerrar

Curso WordpressCurso Wordpress

debug.log: el archivo de depuración que puede regalar los secretos de tu sitio

Cuando algo falla en WordPress, la recomendación clásica es activar el registro de depuración en wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );

Funciona muy bien: los errores quedan anotados en un archivo. El problema es dónde: por defecto, en wp-content/debug.log, una dirección que cualquiera puede abrir desde el navegador.

Qué puede revelar

Los robots que buscan sitios vulnerables piden /wp-content/debug.log en millones de sitios todos los días. Lo que suelen encontrar:

  • Rutas completas del servidor, con el nombre de tu usuario de cPanel (/home/usuario/public_html/...).
  • Nombres y versiones de plugins, incluidos los desactualizados.
  • Consultas SQL con nombres de tablas y, a veces, datos.
  • Correos, nombres o datos de pedidos si algún plugin los escribe en el registro.
  • En el peor caso, claves de API o tokens que un plugin mal hecho escribió al registrar un error.

Y como el archivo crece durante meses, puede acumular mucha información.

Comprueba si el tuyo está expuesto

curl -sI https://tudominio.cl/wp-content/debug.log | head -1
  • Si responde 200, el archivo existe y es público. Actúa hoy.
  • Si responde 403, existe pero está bloqueado.
  • Si responde 404, no existe en esa ubicación.

Solución 1: moverlo fuera de la web (la mejor)

WP_DEBUG_LOG acepta una ruta en lugar de true. Pon el archivo en una carpeta que no esté dentro de public_html:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/home/usuario/logs/wp-debug.log' );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Crea antes la carpeta logs en tu directorio de inicio desde el Administrador de archivos de cPanel (al mismo nivel que public_html, no dentro). Cambia usuario por tu usuario real.

Las dos últimas líneas son igual de importantes: evitan que los errores se muestren en pantalla a tus visitas.

Solución 2: bloquearlo en el servidor

Si no puedes mover el archivo, bloquea el acceso a los .log en el .htaccess de la raíz:

<FilesMatch "\.log$">
  Require all denied
</FilesMatch>

En Nginx, el equivalente es location ~* \.log$ { deny all; }.

Solución 3: no dejarlo encendido

El registro de depuración es una herramienta para diagnosticar, no para dejar activa siempre:

  1. Actívalo cuando tengas un problema.
  2. Reproduce el error y revisa el archivo.
  3. Desactívalo (WP_DEBUG en false) y borra el archivo.

Si heredaste un sitio, revisa también si quedaron otros archivos de registro a la vista: error_log en la raíz o en wp-admin, archivos .log de plugins de respaldo o seguridad, y archivos phpinfo.php o info.php. La regla del .htaccess de arriba cubre todos los .log.

Para encontrarlos todos

Por SSH, desde la carpeta del sitio:

find . -maxdepth 3 \( -name "*.log" -o -name "error_log" -o -name "phpinfo.php" -o -name "info.php" \) -exec ls -lh {} \;

Revisa cada resultado: borra lo que no necesites y protege lo que sí.

¿Encontraste un debug.log enorme y no sabes qué significan los errores? Pega algunas líneas en el foro (borrando rutas y datos personales) y te ayudamos a interpretarlas.