109 votes

Vérifier si xdebug fonctionne

Sans installer un éditeur de texte ou un IDE, est-il possible de tester si xdebug fonctionne, c'est-à-dire s'il peut déboguer du code php ?

La seule partie où xdebug apparaît dans phpinfo() est la suivante :

Fichiers .ini supplémentaires analysés /etc/php5/apache2/conf.d/mysql.ini, /etc/php5/apache2/conf.d/mysqli.ini, /etc/php5/apache2/conf.d/pdo.ini, /etc/php5/apache2/conf.d/pdo_mysql.ini, /etc/php5/apache2/conf.d/xdebug.ini

Il n'est mentionné nulle part ailleurs dans le phpinfo().

109voto

Spudley Points 85371

Sans faire de débogage, je suppose que vous ne pouvez pas être certains qu'un débogueur fonctionne.

Mais vous pouvez être sûr - je suppose que l'on peut supposer que si certains aspects de xDebug fonctionnent, alors tout fonctionne.

Cela étant, vous pouvez confirmer que xDebug est installé et en place en essayant ce qui suit :

1) phpinfo() -- cela vous montrera toutes les extensions qui sont chargées, y compris xDebug. Si elle est présente, il y a de fortes chances qu'elle fonctionne.

2) Si cela ne vous suffit pas, vous pouvez essayer d'utiliser la fonction var_dump() xDebug modifie la sortie de la fonction var_dump() pour inclure des informations supplémentaires. Si cela est en place, alors xDebug fonctionne.

3) xDebug modifie la sortie d'erreur de PHP. Si votre programme se plante avec xDebug, vous obtiendrez plus d'informations sur l'échec qu'avec la sortie d'erreur standard de PHP.

4) xDebug ajoute également un certain nombre de fonctions d'aide à PHP. Vous pouvez essayer l'une d'entre elles pour voir si elle fonctionne. Par exemple, la fonction xdebug_get_code_coverage() devrait exister et retourner un tableau. Si c'est le cas, alors xDebug est installé. Sinon, il ne l'est pas.

82voto

Luke Madhanga Points 353

Exécuter

php -m -c

dans votre terminal, puis recherchez [Zend Modules] . Il devrait être quelque part là s'il est chargé !

NB

Si vous utilisez Ubuntu, il se peut qu'il n'apparaisse pas ici parce que vous devez ajouter l'attribut xdebug les paramètres de /etc/php5/apache2/php.ini en /etc/php5/cli/php.ini .

Mes paramètres Xdebug :

Pour Xdebug 3 (et plus)

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.mode=debug
xdebug.client_host=localhost
;# The default is 9003
xdebug.client_port=9000

Pour Xdebug 2.9 (ou ci-dessous)

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

49voto

KsaR Points 260

Essayez comme suit, vous obtiendrez un retour xDebug does exists. o xDebug doesn't exists. :

<?=sprintf('xDebug does%s exists.', extension_loaded('xdebug') ? '' : "n't");

Sur CLI :

php -r "printf('xDebug does%s exists.' . PHP_EOL, 
extension_loaded('xdebug') ? '' : 'n\'t');"

29voto

Théo T. Carranza Points 1745

Après une âpre course de presque 24 heures pour essayer de faire fonctionner xdebug avec Netbeans 8.0.2, j'ai trouvé une solution qui, je l'espère, fonctionnera pour toutes les piles Ubuntu et liées à Ubuntu.

Problème numéro 1 : les versions de PHP et de xdebug doivent être compatibles.

Parfois, si vous avez une installation Linux et que vous utilisez apt-get pour installer xdebug, vous n'obtenez pas la bonne version de xdebug. Dans mon cas, j'avais la dernière version de php mais une ancienne version de xdebug. Cela doit être dû à ma version actuelle de Xubuntu. Les versions des logiciels dépendent des dépôts, qui dépendent de la version du système d'exploitation que vous utilisez.

Solution : PHP possède un gestionnaire d'extension appelé PECL. Suivez les instructions données aquí pour qu'il soit opérationnel. Tout d'abord, comme l'a souligné un membre dans les commentaires, vous devez installer le paquetage développeur de PHP pour que PECL fonctionne :

sudo apt-get install php5-dev

Ensuite, en utilisant PECL, vous pourrez installer la dernière version stable de xdebug :

sudo pecl install php5-xdebug

Une fois que vous l'aurez fait, la bonne version de xdebug sera installée mais pas prête à être utilisée. Après cela, vous devrez l'activer. J'ai vu de nombreuses suggestions sur la façon de le faire, mais le fait est que PHP a besoin que certains modules soient activés à la fois sur le client et sur le serveur, dans ce cas Apache. Il semble que la meilleure pratique ici soit d'utiliser la méthode intégrée d'activation des modules, appelée php5enmod. L'utilisation est décrite aquí .

Problème numéro 2 : activer correctement le module

Tout d'abord, vous devez aller dans le dossier /etc/php5. Vous y trouverez 3 dossiers, apache2, cli, et mods_available. Le dossier mods_available contient des fichiers texte avec des instructions pour activer un module donné. La convention de nom est [module].ini. Jetez un coup d'œil à l'intérieur de quelques-uns d'entre eux, pour voir comment ils sont configurés.

Maintenant, vous devez créer votre fichier ini dans le dossier mods_available. Créez un fichier nommé xdebug.ini, et à l'intérieur de ce fichier, collez ceci :

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

Assurez-vous que la directive [xdebug] est présent, exactement comme dans l'exemple ci-dessus. Il est impératif pour que le module fonctionne. En fait, il suffit de copier et coller l'ensemble du code, vous serez plus heureux de cette façon :D

Note : le chemin zend_extension est très important. Dans cet exemple, il pointe vers la version actuelle du moteur PHP, mais vous devriez d'abord aller dans /usr/lib/php5 et vous assurer que le dossier nommé avec des chiffres est le bon. Ajustez le nom à ce que vous voyez, et pendant que vous y êtes, vérifiez dans le dossier que le fichier xdebug.so est bien là. Il devrait l'être, si vous avez tout fait correctement.

Maintenant, avec votre xdebug.ini créé, il est temps d'activer le module. Pour ce faire, ouvrez une console et tapez :

php5enmod xdebug

Si tout s'est bien passé, PHP a créé deux liens vers ce fichier, l'un dans /etc/php5/apache2/conf.d et l'autre dans /etc/php5/cli/conf.d.

Redémarrez votre serveur Apache et tapez ceci sur la console :

php -v

Vous devriez obtenir quelque chose comme ça :

PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans

Ce qui signifie que le client PHP a lu votre fichier xdebug.ini et a chargé le module xdebug.so. Jusqu'ici tout va bien.

Maintenant, créez un phpinfo script quelque part sur votre serveur web, et exécutez-le. Voici ce que vous devriez voir, si tout s'est bien passé :

enter image description here

Si vous voyez ceci, Apache a également chargé le module, et vous êtes probablement prêt à partir. Maintenant, voyons si Netbeans va déboguer correctement. Créez un script très simple, ajoutez quelques variables, donnez-leur des valeurs, et définissez un point d'arrêt sur elles. Maintenant, appuyez sur CTRL+F5, cliquez sur "step in" sur votre panneau de débogage, et voyez si vous obtenez quelque chose comme ceci :

xdebug in action

N'oubliez pas de vérifier la configuration de Netbeans pour le débogage, sous tools/options/php. Cela devrait ressembler à quelque chose comme ceci :

Debugging configurations on Netbeans

J'espère que cela vous aura permis de faire la lumière sur ce problème plutôt obscur et déroutant.

Meilleurs vœux !

14voto

goulashsoup Points 422

Pour prolonger KsaR et fournir une possibilité de vérifier xdebug à partir de la ligne de commande :

php -r "echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X