web-dev-qa-db-fra.com

Où devrais-je dire à WordPress où les messages error_log doivent être écrits?

J'ai deux instances différentes du même serveur (une pour le développement, une pour le déploiement), construites de manière indépendante mais fondamentalement identiques (même système d'exploitation, même version de WordPress, même contenu, etc.).

Cependant, je suis confus au sujet de la configuration: il me semble que leur configuration est identique (sauf que le serveur de déploiement reçoit l'ordre de ne pas écrire les erreurs/avertissements dans le navigateur).

Les deux configurations spécifient ini_set( 'error_log', '/var/log/wp-debug.log' ); et ce fichier est en effet créé par les deux; Cependant, sur un serveur, tout ce qui est écrit avec error_log(...) va à /var/log/wp-debug.log alors que sur l'autre serveur, cette sortie va plutôt à /var/log/Apache2/error.log (bien que PHP erreurs et avertissements passent à /var/log/wp-debug.log).

J'ai essayé de jouer avec les valeurs définies de WP_DEBUG, WP_DEBUG_LOG et WP_DEBUG_DISPLAY, ainsi que de modifier le paramètre display_errors qui est défini via ini_set(...), mais rien ne semble faire une différence.

Puis-je spécifier quelque part que je veux que la sortie des appels error_log(...) soit dirigée vers l'un ou l'autre de ces journaux? (J'aimerais que la sortie aille toujours dans Apache error.log car cette information supplémentaire que je veux utiliser.)

3
Richard Wiseman

Comme décrit ailleurs dans cette page, dans mon cas, la solution consistait simplement à réinitialiser la valeur du paramètre error_log de PHP. Je l'ai fait en ajoutant à la fin de mon /var/www/html/wp-config.php:

ini_restore('error_log');

Un point important: j’ai fini par mettre cela à la fin parce que cela ne semblait pas prendre effet lorsqu’il était inclus juste après les différentes lignes define('WP_DEBUG...', ...);.

Merci à Rarst et bynicolas pour leurs conseils, qui m'ont conduit à cette solution.

0
Richard Wiseman

Du côté WP, le seul traitement qu’il gère est de définir le journal sur WP_CONTENT_DIR . '/debug.log' si WP_DEBUG_LOG est activé (très mauvaise idée dans un environnement de production en tant qu’emplacement public). Si je me souviens bien, les premières implémentations de cette constante permettaient de personnaliser le chemin, mais ce n'est plus le cas.

D'après mon expérience, ini_set( 'log_errors', 1 ); ini_set( 'error_log', '/path' ) dans wp-config.php devrait suffire (si vous n'activez pas WP_DEBUG_LOG, ce qui le remplacera).

Votre deuxième cas semble étrange. Je m'attendrais à ce que les erreurs se produisent dans une destination ou une autre, mais pas dans deux fichiers journaux distincts. Il se peut que quelque chose change la configuration pendant l'exécution. Il est impossible de dire sans un dépannage manuel.

3
Rarst