¿Es posible cambiar la ubicación del archivo de registro para WP_DEBUG_LOG?

1 feb 2013, 21:43:33
Vistas: 33.5K
Votos: 28

Uso WP_DEBUG_LOG en mi entorno de desarrollo y no tengo problemas con que debug.log esté en el directorio wp-content.

A veces activo WP_DEBUG en producción cuando necesito depurar algo, y todavía quiero usar el registro pero me gustaría redirigirlo a algún lugar fuera de mi directorio raíz web. ¿Es posible hacer esto usando WP_DEBUG_LOG?

0
Todas las respuestas a la pregunta 7
0
23

Parece que la mayoría de las respuestas aquí ya no son válidas para la versión 5.1 de WP y superiores debido a este cambio: https://make.wordpress.org/core/2019/01/23/miscellaneous-developer-focused-changes-in-5-1/

Ahora puedes definir WP_DEBUG_LOG como una ruta en wp-config.php si deseas sobrescribir la ubicación predeterminada wp-content/debug.log, por ejemplo:

define( 'WP_DEBUG_LOG', 'wp-content/uploads/debug.log' );
14 may 2019 21:25:23
3
22

Resulta que todo lo que hace WP_DEBUG_LOG es:

ini_set( 'log_errors', 1 );
ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );

Entonces, si deseas cambiar la ubicación del registro para WP_DEBUG_LOG en un plugin o tema, la respuesta de webaware es la mejor. Si solo quieres cambiarlo dentro de wp-config.php, puedes reemplazar define( 'WP_DEBUG_LOG', true ); con las 2 líneas anteriores y cambiar el archivo de registro a donde prefieras.

3 feb 2013 01:01:30
Comentarios

Un par de años después, y no logro que el archivo se llene con errores a menos que esté en la carpeta de contenido de WordPress.

Mike Kormendy Mike Kormendy
29 ene 2017 07:39:50

@MikeKormendy - podría ser un problema de permisos de directorio. La ubicación donde deseas escribir el archivo debe tener permisos de escritura para el usuario que es el propietario del proceso del ejecutor de PHP. En términos simples, asegúrate de que el destino del nuevo archivo tenga los mismos permisos que la carpeta wp-content actualmente tiene.

Michael Teter Michael Teter
23 dic 2019 18:54:03

Esto me devuelve el error 500 (

skywind skywind
4 oct 2021 13:13:33
0

Los tiempos cambian, y también las respuestas correctas a las preguntas técnicas.

La respuesta actual a finales de 2019 es simple. Al definir la "constante" WP_DEBUG_LOG en wp-config.php, ahora puedes proporcionar una ruta donde quieres que se escriba el archivo.

define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );

Consulta la Documentación de Soporte de WordPress

23 dic 2019 18:38:16
4

Sí, si agregas algún código a un plugin o al functions.php de un tema como este:

if (defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) {
    ini_set( 'error_log', WP_CONTENT_DIR . '/debug.txt' );
}

Edición: alguien más me presentó la necesidad de hacer esto, así que he incluido algo de código en un plugin simple que pueden editar; está disponible como un gist si alguien lo quiere.

2 feb 2013 03:38:32
Comentarios

Intenté agregar esto a mi archivo wp-config.php y no funciona. ¿Será porque wp-config.php se carga antes que el lugar real en el código donde se usa WP_DEBUG_LOG para definir el archivo de registro?

jjeaton jjeaton
3 feb 2013 00:25:11

Pude hacer que esto funcione agregándolo en un mu-plugin. ¿Hay alguna manera de que pueda hacer este cambio solo dentro de wp-config? Supongo que tendría que establecer WP_DEBUG_LOG en false y reemplazar lo que hace yo mismo?

jjeaton jjeaton
3 feb 2013 00:27:59

Esto funciona bien si puedes poner el código en un plugin o tema, ¡gracias!

jjeaton jjeaton
3 feb 2013 01:02:06

Sí, simplemente guárdalo en un plugin sencillo. Consulta Cómo escribir un plugin en el codex.

webaware webaware
3 feb 2013 01:04:24
0

Parece que el código de WordPress ha cambiado desde la última respuesta a esta pregunta. La función actual wp_debug_mode() relacionada con esas constantes incluye una prueba para verificar si WP_DEBUG_LOG equivale a true o 1 -- en cuyo caso se comporta como otros lo han descrito.

Sin embargo, también puedes establecer esa constante como una cadena -- la ruta de archivo que prefieras -- y el registro se guardará allí. Por ejemplo, puedes establecer una ruta fuera de tus directorios de contenido web accesible públicamente. Es posible que necesites ajustar los permisos de archivo para que funcione.

Yo busqué esta respuesta porque el plugin de seguridad WordFence está advirtiendo que mi registro de depuración podría ser accesible en /wp-content/

if ( in_array( strtolower( (string) WP_DEBUG_LOG ), array( 'true', '1' ), true ) ) { $log_path = WP_CONTENT_DIR . '/debug.log'; } elseif ( is_string( WP_DEBUG_LOG ) ) { $log_path = WP_DEBUG_LOG; } else { $log_path = false; }

8 mar 2019 00:50:47
2

Por lo que sé, no puedes cambiar la ubicación del archivo de depuración predeterminado. Lo que sí puedes cambiar es la ubicación del registro de errores MU y la ubicación del archivo de registro de errores de PHP.

$ds = DIRECTORY_SEPARATOR;
# DEPURACIÓN
define( 'WP_DEBUG',               true );
// archivo: ~/WP_CONTENT_DIR/debug.log
define( 'WP_DEBUG_LOG',           true );
define( 'WP_DEBUG_DISPLAY',       true );
define( 'SAVEQUERIES',            true );
# DEPURACIÓN: MU
define( 'DIEONDBERROR',           true );
define( 'ERRORLOGFILE',           WP_CONTENT_DIR.$ds.'logs'.$ds.'mu_error.log' );

@ini_set( 'log_errors',           'On' );
# Ubicación del registro de errores de PHP
@ini_set( 'error_log',            WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );
1 feb 2013 21:57:27
Comentarios

¿Entonces necesitaría desactivar WP_DEBUG_LOG para asegurarme de que el archivo debug.log nunca se cree en mi directorio wp-content?

jjeaton jjeaton
1 feb 2013 21:59:01

Estás haciendo bastantes preguntas para esta hora y día :) No estoy en condición mental para responderlas ahora. Vuelve mañana y salta al chat.

kaiser kaiser
1 feb 2013 22:47:02
0

Tuve este problema. Lo que hice fue agregar lo siguiente al wp-config:

define('WP_DEBUG', true);
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', '/var/log/wp-debug.log' );

Luego cambiar el propietario de wordpress-debug.log:

chown -R www-data:www-data /var/log/wp-debug.log

Así que para mí era un problema de permisos. Usar chown para establecer los permisos del archivo al usuario/grupo de wordpress lo resolvió.

7 jul 2023 06:51:25