Xdebug est un outil très important pour les développeurs PHP.
Quand il est installé puis activé et que l'IDE - par exemple PhpStorm ou VS Code - est correctement configuré, Xdebug offre une aide inestimable pour déboguer un programme PHP.
Notez que Xdebug est généralement installé par défaut avec des environnements virtualisés tels Devilbox ou Homestead.
Si vous travaillez avec un environnement non virtualisé, par exemple AMPPS ou XAMPP, vous pouvez vérifier si Xdebug est installé en entrant cette commande dans une fenêtre Terminal alors que vous êtes dans le dossier dans lequel PHP est installé.
php -v
Si Xdebug est installé, vous obtiendrez une ligne de ce genre à la fin de la réponse.
with Xdebug v3.1.3, Copyright (c) 2002-2022, by Derick Rethans
Dans le cas où vous n'obtenez aucune référence à Xdebug, vous devrez procéder à son installation.
Je vous propose ici une technique pour installer Xdebug sous macOS Big Sur ou plus récent.
Note : au moment de l'écriture initiale de cette fiche (mars 2021), AMPPS ne fonctionnait plus sous macOS (ceci a été corrigé depuis). J'ai dû travailler avec XAMPP.
Je n'ai pas réussi à installer Xdebug avec la dernière version de XAMPP ( 7.4.1). J'obtenais le message « Xdebug requires Zend Engine API version 320180731. The Zend Engine API version 320190902 which is installed, is newer. ».
Je sais maintenant que ceci est dû au fait que le système utilise la mauvaise version de PHP. Voir sous ce lien une piste pour corriger la situation.
Tout a bien fonctionné une fois que j'ai installé une ancienne version de XAMPP (7.3.27-1).
Vous aurez besoin de PECL (PHP Extension Community Library) pour installer Xdebug. Pour l'installer, suivez les instructions sur cette fiche : « Installer PEAR et PECL ».
Vous lancerez l'installation de Xdebug avec PECL sous peu, après avoir complété quelques autres configurations.
Pour réussir l'installation de Xdebug sous macOS Big Sur, vous aurez besoin des outils en ligne de commande de Xcode. C'est que l'installation régulière requiert des fichiers qui ne sont plus disponibles à l'endroit recherché et ce, depuis macOS Mojave.
Pour les installer, entrez cette commande dans une fenêtre Terminal :
xcode-select --install
Si les outils en ligne de commande de Xcode sont installés, vous obtiendrez le message « command line tools are already installed ».
Sinon, une fenêtre vous demandera de lancer l'installation.
Cliquez sur
.Si vous tentez d'installer Xdebug à ce stade, vous obtiendrez le message « fatal error: 'php.h' file not found ».
Pour contourner ce problème, vous devez d'abord connaître le chemin des fichiers recherchés, notamment php.h.
sudo find /Library -name php.h
Vous obtiendrez un résultat semblable à celui-ci. Les versions dans les noms de fichiers pourraient différer.
/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include/php/main/php.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/php/main/php.h
Ces chemins sont très différents du /usr/include/php que les commandes phpize et php-config - requises pour l'installation - recherchent normalement.
La procédure fournie sur le blogue Affinity Bridge suggère de copier ces fichiers de commandes à un autre endroit et de modifier les versions copiées.
cp /usr/bin/phpize /usr/local/bin/phpize
cp /usr/bin/php-config /usr/local/bin/php-config
Ouvrez le fichier /usr/local/bin/phpize à l'aide d'un éditeur, par exemple Geany.
Modifiez cette instruction, qui est environ à la ligne 8 :
includedir="`eval echo ${prefix}/include`/php"
pour ceci, en prenant soin d'utiliser un des chemins trouvés plus tôt. Utilisez la version qui correspond à votre version de macOS ou celle qui s'en rapproche le plus (ici : 11.1).
includedir="`eval echo /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include`/php"
Ouvrez maintenant le fichier /usr/local/bin/php-config à l'aide d'un éditeur.
Modifiez ces instructions, qui sont environ aux lignes 9 et 13.
La seconde ligne doit être modifiée pour éviter le message d'erreur « ERROR: failed to write /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so (copy(/usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so): failed to open stream: Operation not permitted) ».
include_dir="${prefix}/include/php"
...
extension_dir='/usr/lib/php/extensions/no-debug-non-zts-20180731'
pour ceci, ici encore en prenant soin d'utiliser un des chemins trouvés plus tôt pour la première ligne.
include_dir="/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include/php"
...
extension_dir='/usr/local/lib/php/extensions/no-debug-non-zts-20180731'
Maintenant que les outils requis sont installés et configurés, mettez à jour PECL :
sudo pecl channel-update pecl.php.net
Lancez l'installation de Xdebug à l'aide de cette commande :
sudo pecl install xdebug
À la fin du long processus, vous obtiendrez ceci à l'écran :
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so'
install ok: channel://pecl.php.net/xdebug-3.0.3
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so" to php.ini
Le fichier xdebug.so, dont le chemin a été surligné dans la sortie d'écran plus haut, doit être copié :
cd /Applications/AMPPS/php-X.X/lib/extensions
sudo cp /usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so .
cd /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731
sudo cp /usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so .
Il faut maintenant indiquer à php.ini où trouver le fichier xdebug.so.
Sous AMPPS, ouvrez ce fichier à l'aide du tableau de bord AMPPS.
Sous XAMPP, faites afficher une page Web avec l'instruction phpinfo(). Ceci vous indiquera le chemin exact du fichier php.ini à modifier.
Dans le fichier php.ini, vous devez vérifier la présence de l'instruction zend_extension = ".../xdebug.so".
Si elles est absente ajoutez-la près de la section Dynamic Extensions.
Vous devez spécifier le chemin du fichier xdebug.so.
Assurez-vous également que la configuration xdebug.mode soit à debug (avec Xdebug 2, on devait plutôt mettre xdebug.remote_enable à 1).
Il ne doit pas y avoir de point-virgule devant ces instructions.
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
zend_extension=xdebug.so
xdebug.mode=debug
Redémarrez votre serveur HTTP pour que les modifications soient prises en compte.
Relancez la page Web qui contient l'instruction phpinfo(). Vous devriez voir que une section complète sur Xdebug.
Si l'extension Xdebug n'apparaît pas dans la sortie de phpinfo(), consultez le fichier /Applications/XAMPP/xamppfiles/logs/error_log. Vous pourriez y trouver des indices sur ce qui n'a pas fonctionné.
Il vous reste désormais à configurer votre IDE, par exemple phpStorm ou VS Code pour qu'il puisse faire appel au débogueur.
« How to install Xdebug on macOS 11 Big Sur (Xcode 12) ». Profiling Viewer. https://profilingviewer.com/installing-xdebug-on-bigsur.html
« Adding php extensions to system php under os x 10.15 (Catalina) ». Affinity Bridge. https://affinitybridge.com/blog/adding-php-extensions-system-php-under-os-x-1015-catalina
« Installation of Xdebug on MacOS Catalina 10.15 ». Louis Charette. https://bbqsoftwares.com/blog/xdebug-catalina
▼Publicité