Formation « Développer un thème WordPress sur mesure »

Debugguer son code avec le log PHP et le Debug True

Lecture : 6 minutes • Pratique : 15 minutes • 0

En tant que développeur, il est essentiel de savoir quand quelque chose ne fonctionne pas comme prévu sur son site. Dans ce cours nous allons voir comment activer le mode Debug pour voir les erreurs PHP et où trouver les logs d'erreurs du serveur.

Debug : True

Lorsque l’on développe en PHP il arrive que l’on fasse des erreurs. Les extensions aussi peuvent en générer. Pour ne pas les manquer et surtout comprendre d’où vient le problème, on va activer le mode Debug qui permettra d’afficher les erreurs à l’écran.

Pour cela on va ouvrir le fichier wp-config.php à la racine du site WordPress avec notre éditeur de texte favori et chercher (CTRL+F) la ligne qui contient WP_DEBUG. On va maintenant passer sa valeur à true. Si la ligne n’existe pas, il suffit de l’ajouter, généralement après la variable $table_prefix. En réalité on peut mettre l’instruction n’importe où avant le commentaire /* That's all.

PHP
wp-config.php
<?php 
define('WP_DEBUG', true);

Il faudra cependant bien penser à remettre cette valeur à false lorsque l’on mettra en ligne le site web pour 2 raisons :

  1. si une erreur survient en ligne, ce ne sera pas très esthétique si elle s’affiche pour tous les utilisateurs
  2. les erreurs contiennent des informations précieuses à ne pas laisser à la portée d’un hacker potentiel !
Le saviez-vous ?

Le saviez-vous ?

Le fichier wp-config.php est le fichier de configuration de WordPress créé automatiquement lors de l’installation qui contient notamment les informations de connexion à la base de données et quelques configurations de base. On parlera plus en détails de ce fichier dans le cours suivant.

Désactiver automatiquement le debug en ligne

Si comme moi vous avez peur d’oublier de repasser à false lors de la mise en ligne, j’ai une petite technique pour automatiser tout ça : PHP détecte l’adresse du site, et si c’est une URL locale, il active le Debug, sinon il le laisse désactivé !

Voici le code :

PHP
wp-config.php
<?php
$is_localhost = ($_SERVER['REMOTE_ADDR'] == "127.0.0.1" or $_SERVER['REMOTE_ADDR'] == "::1");
define('WP_DEBUG', $is_localhost);

La première ligne représente un test grâce à la variable d’environnement fournie par PHP REMOTE_ADDR : elle permet de savoir si l’IP de la machine est 127.0.0.1, qui est l’adresse localhost : l’IP de notre propre ordinateur. Si c’est le cas : on est bien en local, donc $is_localhost passe à true, sinon il passe à false.

Et donc on applique le résultat de $is_localhost dans WP_DEBUG par la suite.

L’autre partie du test, qui vérifie si l’adresse correspond à ::1, est un test pour les nouvelles adresses. Cette ligne de code fonctionne donc autant pour les adresses IPV4 que celles en IPV6. Il n’est pas nécessaire d’en savoir plus à ce sujet donc si ça ne vous parle pas, ne vous inquiétez pas.

On pourra d’ailleurs utiliser le même subterfuge pour distinguer les identifiants de base local et du serveur en ligne.

Affichage d’une erreur PHP

Pour vérifier que ça marche, faites volontairement une erreur de PHP, par exemple retirez un ; à la fin d’une ligne dans le fichier wp-config.php, enregistrez et rechargez votre page (CTRL+R). Vous obtiendrez une erreur PHP  :

Parse error: syntax error, unexpected 'define' (T_STRING) in /app/public/wp-config.php on line 26

On sait de quel fichier provient l’erreur et de quelle ligne. Dans ce cas précis par contre j’ai oublié de fermer la ligne avec ; sur la ligne précédente. Il faut donc bien penser, si vous ne comprenez pas bien le message, de regarder également à la ligne d’avant, au cas où.

Trouver de l’aide à propos d’une erreur PHP sur Internet

Lorsque le message d’erreur ne vous parle pas du tout, copiez simplement la première partie dans Google, vous trouverez beaucoup d’autres personnes qui ont déjà rencontré le souci dans le passé et qui seront en mesure de vous apporter la réponse.

Le site Stack Overflow est d’ailleurs souvent en tête des résultats de recherche Google.

C’est un système de questions réponses très bien fait : les gens votent pour la réponse la plus judicieuse, qui apparait du coup en haut de page avant les autres.

Capture d'écran du site Stack Overflow
Le site Stack Overflow, une vraie mine d’informations

Sur la capture ci-dessous vous pouvez voir que la réponse a été votée 572 fois et validée comme bonne réponse par la personne qui a posé la question ! Pratique non ? Ce site est un vrai gain de temps et vous évitera bien souvent de perdre des heures à comprendre un souci qu’un autre développeur dans le monde a déjà eu par le passé.

J’ai toujours trouvé réponse à mes questions et de fait jamais eu besoin d’en poser moi-même une. Vous trouverez énormément de questions / réponses dédiées à WordPress sur ce site.

Conseil

Bien souvent les questions et réponses seront en anglais. Pensez donc à taper votre question également en anglais dans la mesure du possible pour de meilleurs résultats.

Les logs d'erreur PHP, SQL, Apache...

Dans un serveur pleins de choses pourraient mal se passer. Heureusement chaque module tient un inventaire des problèmes dans des fichiers textes appelés logs. Ils sont horodatés et vous pourrez donc facilement retrouver une erreur qui s’est produite à un instant précis.

Information

Le log PHP reprend les erreurs affichées à l'écran. Parfois l'erreur intervient lors d'un traitement de page qui subit une redirection : vous n'avez donc pas le temps de voir passer l'erreur puisque la page est rechargée. C'est donc via le fichier log que vous pourrez comprendre le souci.

Selon le système ou l’hébergeur que vous utilisez, les logs ne se trouvent pas toujours au même endroit.

Les logs d’erreurs sur Local by Flywheel

Comme on l’a vu sur le cours dédié à l’installation de Local by Flywheel, chaque site est dans une bulle indépendante des autres. Les fichiers logs se trouvent donc dans cette bulle : il suffit d’aller dans le dossier de votre site puis le sous-dossier logs qui se trouve au même niveau que apps.

Capture d'écran du dossier logs
Le dossier contenant tous les logs d’erreurs

Vous y retrouvez notamment les logs PHP, Apache ou Nginx (votre serveur) et MySQL (la base de données).

Logs sur MAMP et WAMP

Pour ceux qui sont sur MAMP les fichiers logs se trouvent dans C:/MAMP/logs/ sur PC et Applications/MAMP/logs sur Mac.

Capture d'écran du dossier des logs
Les logs de MAMP

Par contre ici il n’y a qu’un seul fichier de log par module pour tout le serveur. Il faudra donc bien regarder si l’erreur provient d’un site A ou d’un site B.

Et enfin sur WAMP les logs se trouvent dans C:/WAMP/logs/ .

Des extensions WordPress pour vous aider

Il existe aussi des extensions pour vous aider à mieux travailler en local comme Query Monitor ou encore Debug Bar, comme le conseille Daniel, expert en SEO, et blogueur sur SeoMix.fr :

Daniel ROCH
Orateur WordCamp & Auteur
Organisateur du WP TECH

Le conseil Daniel ROCH

Consultant SEO et WP et fondateur de SeoMix

Méfiez-vous de WordPress, entre ce que vous voyez dans le rendu visuel et ce qu’il y a dans le code, il y a un gouffre. Il faut toujours prendre du recul dans son développement. Ainsi, je conseille TRÈS fortement de toujours travailler avec les fonctions de debug à TRUE et installer des extensions comme Query Monitor et Debug Bar notamment. Ensuite, il FAUT toujours utiliser un outil externe pour crawler son site afin de voir tout ce qui est présent dans le code HTML mais que l’utilisateur ne voit pas. Pour cela, utilisez Xenu Link Sleuth ou encore Screaming Frog Spider SEO.

Suivez-moi sur Twitter : @rochdaniel • Mon site : SeoMix
Query Monitor

Query Monitor

Query Monitor is a debugging plugin for anyone developing with WordPress. It has some advanced features for debugging of AJAX calls, REST API requests, redirects...

Télécharger

Installations actives : 30000+

Note :

Debug Bar

Debug Bar

Adds a debug menu to the admin bar that shows query, cache, and other helpful debugging information. A must for developers!

Télécharger

Installations actives : 30000+

Note :

On se penchera sur ces outils un peu plus en détail plus tard dans la formation ! Pour l’instant ils peuvent être utiles mais peut s’en passer encore un peu.


Vous voilà parés pour travailler dans de bonnes conditions ! Dans le prochain cours on analyser plus en détails ce fichier de configuration !

0

Questions, réponses et commentaires

    Laisser un commentaire