Xdebug

De Wiki de Jordan LE NUFF
< Technique‎ | PHP
Révision datée du 13 août 2019 à 12:56 par Jordan (discussion | contributions) (Page créée avec « == Présentation == Xdebug est une extension pour PHP facilitant le débogage et le développement. Il contient un débogueur fonctionnant clé-en-main avec les IDEs; il m... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Présentation

Xdebug est une extension pour PHP facilitant le débogage et le développement. Il contient un débogueur fonctionnant clé-en-main avec les IDEs; il met à niveau la fonction var_dump() de PHP; il ajoute des traces de pile pour les notices, les avertissements, les erreurs et les exceptions; il comporte des fonctionnalités pour enregistrer chaque appel de fonction et chaque attribution de variable sur disque; il contient un profileur; et il fournit une fonctionnalité de couverture de code à utiliser avec PHPUnit.

Plus d'informations sur le site de l'éditeur :

Installation

Côté serveur

Pour PHP 5

Télécharger la dernière version de Xdebug compatible avec la version 5 de PHP :

wget https://xdebug.org/files/xdebug-2.5.5.tgz

Par exemple, sur un serveur, PHP 5 a été installé depuis les sources et elles sont disponibles dans le dossier /local/builds/php-5.6.40. De ce fait, les seuls prérequis à respecter sont automake et autoconf. Vérifier leur présence avec la commande suivante :

rpm -qa|grep -E "automake|autoconf"

Exemple de retour :

automake-1.16.1-4.1.noarch
autoconf-2.69-16.5.noarch

Décompresser Xdebug :

tar -xvzf xdebug-2.5.5.tgz

Déplacer le dossier Xdebug précédemment décompressé dans le dossier /local/builds :

mv xdebug-2.5.5 /local/builds/xdebug-2.5.5_for_php5

Se rendre dans le dossier et lancer phpize :

cd /local/builds/xdebug-2.5.5_for_php5
phpize5

Exemple de retour :

Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226

Lancer la configuration de la compilation de l'extension Xdebug :

./configure --with-php-config=/local/php/php5/bin/php-config

Exemple de fin de retour :

...
configure: creating ./config.status
config.status: creating config.h

Lancer la compilation :

make

Exemple de fin de retour :

...
Build complete.
Don't forget to run 'make test'.

Copier l'extension fraîchement compilée vers le dossier d'extension de PHP 5 :

cp modules/xdebug.so /local/php/php5/lib64/extensions/no-debug-non-zts-20131226/

Editer le fichier /local/php/php5/lib64/php.ini et y ajouter la ligne suivante :

zend_extension = /local/php/php5/lib64/extensions/no-debug-non-zts-20131226/xdebug.so

Relancer PHP 5 :

systemctl restart php5-fpm.service

Pour PHP 7

Obtenir les informations PHP

Se connecter en SSH sur le serveur désiré et lancer la commande suivante :

php7 -i

Cela permet d'obtenir les informations relatives à l'instance de PHP utilisée. Les informations remontées sont les mêmes que celles obtenues au travers d'une page web avec un phpinfo();.

Aller sur le site Xdebug

Copier l'intégralité du retour obtenu, se rendre sur la page https://xdebug.org/wizard.php, coller les données copiées dans le cadre prévu à cet effet et cliquer sur Analyse my phpinfo() output.

Cela permet aux serveurs de Xdebug d'analyser la configuration actuelle de l'instance de PHP utilisée sur le serveur et de donner des directives personnalisées pour installer Xdebug.

En l'occurrence, voici le retour obtenu :

Summary
  • Xdebug installed: no
  • Server API: Command Line Interface
  • Windows: no
  • Zend Server: no
  • PHP Version: 7.3.4
  • Zend API nr: 320180731
  • PHP API nr: 20180731
  • Debug Build: no
  • Thread Safe Build: no
  • OPcache Loaded: no
  • Configuration File Path: /local/php/php7/lib64
  • Configuration File: /local/php/php7/lib64/php.ini
  • Extensions directory: /local/php/php7/lib64/extensions/no-debug-non-zts-20180731
Instructions
  1. Download xdebug-2.7.2.tgz
  2. Install the pre-requisites for compiling PHP extensions. These packages are often called 'php-dev', or 'php-devel', 'automake' and 'autoconf'.
  3. Unpack the downloaded file with tar -xvzf xdebug-2.7.2.tgz
  4. Run: cd xdebug-2.7.2
  5. Run: phpize (See the FAQ if you don't have phpize).
    As part of its output it should show:
    Configuring for:
    ...
    Zend Module Api No:      20180731
    Zend Extension Api No:   320180731
    If it does not, you are using the wrong phpize. Please follow this FAQ entry and skip the next step.
  6. Run: ./configure
  7. Run: make
  8. Run: cp modules/xdebug.so /local/php/php7/lib64/extensions/no-debug-non-zts-20180731
  9. Edit /local/php/php7/lib64/php.ini and add the line
zend_extension = /local/php/php7/lib64/extensions/no-debug-non-zts-20180731/xdebug.so
Suivre les instructions

Télécharger le paquet Xdebug proposé :

wget http://xdebug.org/files/xdebug-2.7.2.tgz

Par exemple, sur un serveur, PHP 7 a été installé depuis les sources et elles sont disponibles dans le dossier /local/builds/php-7.3.4. De ce fait, les seuls prérequis à respecter sont automake et autoconf. Vérifier leur présence avec la commande suivante :

rpm -qa|grep -E "automake|autoconf"

Exemple de retour :

automake-1.16.1-4.1.noarch
autoconf-2.69-16.5.noarch

Décompresser Xdebug :

tar -xvzf xdebug-2.7.2.tgz

Déplacer le dossier Xdebug précédemment décompressé dans le dossier /local/builds :

mv xdebug-2.7.2 /local/builds/xdebug-2.7.2_for_php7

Se rendre dans le dossier et lancer phpize :

cd /local/builds/xdebug-2.7.2_for_php7
phpize7

Exemple de retour :

Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

Lancer la configuration de la compilation de l'extension Xdebug :

./configure --with-php-config=/local/php/php7/bin/php-config

Exemple de fin de retour :

...
configure: creating ./config.status
config.status: creating config.h

Lancer la compilation :

make

Exemple de fin de retour :

...
Build complete.
Don't forget to run 'make test'.

Copier l'extension fraîchement compilée vers le dossier d'extension de PHP 7 :

cp modules/xdebug.so /local/php/php7/lib64/extensions/no-debug-non-zts-20180731

Editer le fichier /local/php/php7/lib64/php.ini et y ajouter la ligne suivante :

zend_extension = /local/php/php7/lib64/extensions/no-debug-non-zts-20180731/xdebug.so

Relancer PHP 7 :

systemctl restart php7-fpm.service

Configuration complémentaire

Un des intérêt de Xdebug est de pouvoir s'y connecter à distance depuis un IDE. Pour ce faire, ajouter les options suivantes dans le php.ini de l'instance PHP désirée :

xdebug.remote_port=9000
xdebug.remote_enable=1
xdebug.idekey="PHPSTORM"

Pour les instances PHP embarquées en tant que module sous Apache, redémarrer Apache (le graceful restera sans effet). Pour les instances PHP lancées via PHP-FM, redémarrer PHP-FPM.