Xdebug
(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... ») |
|||
Ligne 4 : | Ligne 4 : | ||
Plus d'informations sur le site de l'éditeur : | Plus d'informations sur le site de l'éditeur : | ||
*https://xdebug.org/ | *https://xdebug.org/ | ||
+ | |||
+ | ==Compatibilité PHP== | ||
+ | Sur la page https://xdebug.org/docs/compat#versions de Xdebug, on peut y trouver un tableau de compatibilité. | ||
+ | |||
+ | En date du 13/10/2020, le tableau est le suivant : | ||
+ | :[[Fichier:ClipCapIt-201013-143448.PNG]] | ||
== Installation == | == Installation == |
Version du 13 octobre 2020 à 12:40
Sommaire
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 :
Compatibilité PHP
Sur la page https://xdebug.org/docs/compat#versions de Xdebug, on peut y trouver un tableau de compatibilité.
En date du 13/10/2020, le tableau est le suivant :
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
- Download xdebug-2.7.2.tgz
- Install the pre-requisites for compiling PHP extensions. These packages are often called 'php-dev', or 'php-devel', 'automake' and 'autoconf'.
- Unpack the downloaded file with
tar -xvzf xdebug-2.7.2.tgz
- Run:
cd xdebug-2.7.2
- Run:
phpize
(See the FAQ if you don't havephpize
).- 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.
- Run:
./configure
- Run:
make
- Run:
cp modules/xdebug.so /local/php/php7/lib64/extensions/no-debug-non-zts-20180731
- 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.