web-dev-qa-db-fra.com

Est-il possible de changer l'emplacement du fichier journal pour WP_DEBUG_LOG?

J'utilise WP_DEBUG_LOG dans mon environnement de développement et je n'ai aucun problème à ce que debug.log se trouve dans le répertoire wp-content.

Parfois, j'active WP_DEBUG en production lorsque je dois déboguer quelque chose et que je veux toujours utiliser le journal, mais que je souhaite le rediriger vers quelque chose qui ne se trouve pas à la racine Web. Est-ce possible d'utiliser WP_DEBUG_LOG?

14
jjeaton

Il se trouve que tout ce que WP_DEBUG_LOG fait est:

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

Ainsi, si vous souhaitez modifier l'emplacement du journal de WP_DEBUG_LOG dans un plugin ou un thème, la réponse de Webaware est préférable. Si vous souhaitez simplement le modifier dans wp-config.php, vous pouvez remplacer define( 'WP_DEBUG_LOG', true ); par les deux lignes ci-dessus et modifier le fichier journal à l'endroit souhaité.

17
jjeaton

Oui, si vous ajoutez du code à un plugin ou à un functions.php d'un thème, comme ceci:

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

Edit: quelqu'un d'autre vient de me présenter le besoin de le faire. J'ai donc déposé du code dans un simple plug-in qu'ils peuvent éditer. il est disponible en tant que Gist si quelqu'un le veut.

4
webaware

On dirait que le code WordPress a changé depuis la dernière réponse à cette question. La fonction actuelle wp_debug_mode () associée à ces constantes inclut un test permettant de déterminer si WP_DEBUG_LOG est égal à true ou à 1, auquel cas il se comporte comme les autres l’ont décrit.

Cependant, vous pouvez également définir cette constante sur une chaîne - votre chemin de fichier préféré - et le journal y sera généré. Par exemple, vous pouvez définir un chemin en dehors de vos répertoires pour le contenu Web accessible au public. Vous devrez peut-être jouer avec les autorisations de fichiers pour que cela fonctionne.

Je suis venu chercher cette réponse car le plug-in de sécurité WordFence se plaint du fait que mon journal de débogage soit potentiellement accessible dans/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; }

1
David F. Carr

Il semble que les réponses ici ne sont plus vraies pour WP versions 5.1 et supérieures depuis ce changement https://make.wordpress.org/core/2019/01/23/misc Miscellaneous-developer-focused -changes-in-5-1/

Vous pouvez maintenant définir WP_DEBUG_LOG comme chemin si vous souhaitez remplacer le wp-content/debug.log par défaut, par exemple:

define( 'WP_DEBUG_LOG', 'wp-content/uploads/debug.log' );
1
Carl Alberto

En clair, vous ne pouvez pas changer l'emplacement du fichier de débogage par défaut. Ce que vous pouvez modifier est l'emplacement du journal des erreurs de la MU ainsi que celui du fichier du journal des erreurs PHP.

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

@ini_set( 'log_errors',           'On' );
# PHP Error log location
@ini_set( 'error_log',            WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );
0
kaiser