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é :
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 :
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 :
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 !