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


18

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

Parfois, j'active WP_DEBUG en production lorsque j'ai besoin de déboguer quelque chose, et je veux toujours utiliser le journal mais je voudrais le rediriger vers quelque chose en dehors de ma racine Web. Est-ce possible en utilisant WP_DEBUG_LOG?

Réponses:


19

Il s'avère que tout ce que WP_DEBUG_LOG fait est:

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

Donc, si vous souhaitez modifier l'emplacement du journal pour WP_DEBUG_LOG dans un plugin ou un thème, la réponse de Webaware est la meilleure. Si vous souhaitez simplement le modifier à l'intérieur, wp-config.phpvous pouvez le remplacer define( 'WP_DEBUG_LOG', true );par les 2 lignes ci-dessus et modifier le fichier journal où vous le souhaitez.


Quelques années plus tard, je n'arrive pas à obtenir le fichier avec des erreurs sauf s'il se trouve dans le dossier de contenu wordpress.
Mike Kormendy

@MikeKormendy - il pourrait s'agir d'un problème d'autorisations de répertoire. L'emplacement où vous souhaitez écrire le fichier doit être accessible en écriture par l'utilisateur qui est le propriétaire du processus pour le runner php. En termes simples, assurez-vous que la nouvelle destination de fichier dispose des mêmes autorisations que le dossier wp-content possède actuellement.
Michael Teter


4

Oui, si vous ajoutez du code à un plugin ou à un fichier 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' );
}

Modifier: quelqu'un d'autre m'a présenté la nécessité de le faire, j'ai donc déposé du code dans un plugin simple qu'il peut modifier; il est disponible en tant qu'essentiel si quelqu'un le veut.


J'ai essayé d'ajouter ceci à mon fichier wp-config.php et cela ne fonctionne pas. Est-ce parce que wp-config.php est peut-être chargé plus tôt que l'emplacement réel dans le code où WP_DEBUG_LOG est utilisé pour définir le fichier journal?
jjeaton

1
J'ai pu faire fonctionner cela en l'ajoutant dans un mu-plugin. Existe-t-il de toute façon que je puisse simplement effectuer ce changement dans wp-config? Je suppose que je devrais simplement définir WP_DEBUG_LOG sur false et remplacer ce qu'il fait moi-même?
jjeaton

1
Cela fonctionne bien si vous pouvez mettre le code dans un plugin ou un thème, merci!
jjeaton

Oui, il suffit de le vider dans un simple plugin. Voir Écrire un plugin sur le codex.
Webaware

1

Il semble que le code WordPress ait changé depuis la publication de la dernière réponse à cette question. La fonction wp_debug_mode () actuelle liée à ces constantes inclut un test pour savoir si WP_DEBUG_LOG est égal à true ou 1 - auquel cas il se comporte comme d'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 affiché. Par exemple, vous pouvez le définir sur un chemin en dehors de vos répertoires pour le contenu Web accessible au public. Vous devrez peut-être jouer avec les autorisations de fichier pour que cela fonctionne.

Je suis venu chercher cette réponse parce que le plugin de sécurité WordFence se plaint 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; }


0

Afaik, vous ne pouvez pas changer l'emplacement du fichier de débogage par défaut. Vous pouvez modifier l'emplacement du journal des erreurs MU ainsi que l'emplacement du fichier 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' );

Donc, je devrais désactiver WP_DEBUG_LOG afin de m'assurer que le fichier debug.log n'est jamais créé dans mon répertoire wp-content?
jjeaton

1
Vous posez pas mal de questions pour ce jour et l'heure :) Je ne suis pas en état de cerveau pour y répondre maintenant. Revenez demain et sautez dans le chat.
kaiser

0

Les temps changent, tout comme les réponses correctes aux questions techniques.

La réponse actuelle à la fin de 2019 est simple. Lorsque vous définissez la "constante" WP_DEBUG_LOG dans wp-config.php, vous pouvez maintenant fournir un chemin où vous souhaitez que le fichier soit écrit.

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

Voir la documentation de support Wordpress

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.