Con WP_DEBUG_LOG establecido en verdadero, no se muestra ningún resultado de depuración en debug.log, ¿por qué?

4 minutos de lectura

Estoy tratando de habilitar la salida de depuración básica con WordPress para un complemento que estoy desarrollando. Logré obtener algunos hasta ahora, pero no pude redirigirlos a wp-content/debug.log. he estado siguiendo aproximadamente la guía de douglas neiner. Esto es lo que hice:

Agregué este fragmento de código al final de wp-config.php:

@ini_set ('display_errors', 0);
define ('WP_DEBUG', true);
define ('WP_DEBUG_DISPLAY', false);
define ('WP_DEBUG_LOG', true);

yo creé manualmente debug.log archivo y se aseguró de que sea accesible para www-data usuario (estoy ejecutando WordPress localmente, en Ubuntu 12.04):

[email protected]:~$ sudo su www-data -c 'ls -l /usr/share/wordpress/wp-content/debug.log'
-rw-rw-r-- 1 root www-data 0 Dec  9 22:12 /usr/share/wordpress/wp-content/debug.log
[email protected]:~$ sudo su www-data -c 'ls -l /srv/www/localhost/wp-content/debug.log'
-rw-rw-r-- 1 root www-data 0 Dec  9 22:12 /srv/www/localhost/wp-content/debug.log
[email protected]:~$ sudo su www-data -c 'echo i can write >> /usr/share/wordpress/wp-content/debug.log'
[email protected]:~$

Se agregaron algunas supuestas declaraciones de salida de depuración dentro del gancho de activación del complemento, así como el error intencional:

include ('i fail wp');

register_activation_hook (__FILE__, 'hello_world_activate');

function hello_world_activate()
{
    error_log ('I love debug output when it works!');
}

Lo que espero es un mensaje de error sobre el archivo de inclusión que falta en debug.log junto con “¡Me encanta la salida de depuración cuando funciona!” mensaje, y nada en la página. Lo que obtengo es el archivo de inclusión que falta en el mensaje de la página y nada en debug.log. Sin embargo, el mensaje de salida de depuración no se pierde por completo. lo encontre en el /var/log/apache2/error.log:

[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(i fail wp): failed to open stream: No such file or directory in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(): Failed opening 'i fail wp' for inclusion (include_path=".:/usr/share/php:/usr/share/pear") in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] I love debug output when it works!, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(i fail wp): failed to open stream: No such file or directory in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=
[Sun Dec 09 22:58:18 2012] [error] [client 127.0.0.1] PHP Warning:  include(): Failed opening 'i fail wp' for inclusion (include_path=".:/usr/share/php:/usr/share/pear") in /usr/share/wordpress/wp-content/plugins/helloworld2085/helloworld2085.php on line 28, referer: http://localhost/wp/wp-admin/plugins.php?deactivate=true&plugin_status=all&paged=1&s=

sospecho que el error_log() La función no es la correcta para usar para generar debug.log, pero no pude encontrar el camino correcto. Oh, por supuesto que podría codificar la ruta del archivo y agregarla, pero, ya sabes…

  • el mismo problema aqui. Todo está ENCENDIDO, no se muestran errores

    – aflicciones

    31/10/2013 a las 13:56

Encontré el mismo problema con WordPress ejecutándose en Apache 2.4 en Fedora 19. La salida de error_log() estaba aterrizando en /var/log/httpd/error_log en lugar de wp-content/debug.log. El proceso Httpd tenía permiso de escritura (+775) en el directorio /var/www/html/wp-content, pero no pudo crear el archivo wp-content/debug.log.

Mi configuración de depuración de wp-config.php fue:

@ini_set(‘display_errors’,0);
define('WP_DEBUG',         true);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', true);

Al final resultó que, la causa real fue SELinux. Hice un cambio en la política de SELinux y permití que httpd escribiera en wp-content con los siguientes comandos. (Consulte el Solucionador de problemas de SELinux para obtener el comando real para su instalación)

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/wp-content'
restorecon -v '/var/www/html/wp-content'

Después de esta depuración, los mensajes comienzan a aparecer en wp-content/debug.log.

la función error_log() escribe en el registro de errores del servidor web (por ejemplo, /var/log/httpd/error_log); lo que quieres es disparador_error().

  • ¡Esto no siempre es correcto! he estado usando error_log() para escribir en el registro de depuración. Actualmente estoy buscando una razón de por qué (aparentemente con la misma configuración) el error_log() los mensajes han comenzado repentinamente a ir al registro de errores de apache2 en lugar del registro de depuración.

    – Ips Rich

    21 de enero de 2016 a las 10:54

  • Falso. Al agregar define (‘WP_DEBUG_LOG’, true); a wp-config esto debería dar como resultado el comportamiento deseado. codex.wordpress.org/Debugging_in_WordPress#WP_DEBUG_LOG

    – Emparedado

    11 de abril de 2017 a las 10:25

¿Ha sido útil esta solución?