Bonjour, C’est Gaëtan, Développeur web Freelance dans les Alpes.

Jun 21


Pour mes travaux web (PHP principalement) j’utilise une machine virtuelle (VM) virtualbox Ubuntu (version server).
Ayant une bonne machine, avec un jeu de VirtualHost et un dossier partagé intelligemment choisi, je peux facilement tester mes développements sur une config linux proche de celle utilisée en prod.
L’avantage c’est que je ne quitte pas mon OS préféré et que le déploiement en production est instantané.

Comme l’installation n’était pas tricky, voilà une petite aide pour vous aider à pouvoir débugger avec xdebug dans cet environnement un peu particulier (du remote debugging avec OS divers)

Il faut tout d’abord configurer l’interface réseau de la machine virtuel en sélectionner « Accès par pont ». On utilise alors l’adresse mac de la machine pour obtenir une IP fixe (voir config de votre box).

Sur Ubuntu, dans la VM donc, après avoir installé xdebug, on ajoute dans /etc/php5/apache2/php.ini (le php.ini de mod_php).

<pre lang="php">zend_extension=/usr/lib/php5/extensions/xdebug.so
xdebug.remote_enable=1
xdebug.idekey="netbeans-xdebug"
xdebug.remote_handler=dbgp
xdebug.extended_info=1
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_log=/var/log/xdebug.log

sur la machine mère, on crée un répertoire à la rachine C:/media/workspace, D:/media/workspace sur windows, ou /media/workspace/ sur Os X.
Il faut alors ajouter ce dossier à la VM, de manière permanente (utilisez workspace pour le nom):

Dans la machine virtuelle, je monte automatiquement ce dossier (il faut installer Guest Addition si vous utilisez VirtualBox).
Pour ce faire, plusieurs solutions: via le /etc/fstab ou, comme j’ai choisi, une ligne dans /etc/rc.local

<pre lang="batch">
mount -t vboxsf workspace /media/workspace
exit 0

Note: N’utilisez pas le montage automatique proposé par VirtualBox. En effet, il fonctionne mais ne montera pas votre dossier celon la même arborescence et Xdebug ne retrouvera pas ses petits (c’est la clef du process).

Dans vos VirtualHost, vous utiliserez donc les sous dossiers de /media/workspace comme DocumentRoot:

<pre lang="php"><virtualhost>
     DocumentRoot /media/workspace/VOTRE_SOUS_DOSSIER_PROJET
     ServerName NOM_DU_SERVEUR_PROD_FINAL
     <directory>
          Order allow,deny
          allow from all
          allowOverride all
     </directory>
     ErrorLog ${APACHE_LOG_DIR}/error_VOTRE_PROJET.log
</virtualhost>

Installez tout ce qui va bien sur netbeans, configurez correctement vos fichier hosts (sur les deux machine)

/etc/hosts de la VM

<pre lang="php">127.0.0.1     NOM_DU_SERVEUR_PROD_FINAL

C:/Windows/Systeme32/drivers/etc/hosts ou /etc/hosts pour respectivement windows et OS X mère.

<pre lang="php">IP_FIXE_VM     NOM_DU_SERVEUR_PROD_FINAL

voilà, maintenant en visitant NOM_DU_SERVEUR_PROD_FINAL, vous devriez avoir votre projet, et vous devriez aussi pouvoir le débugger correctement depuis NetBeans.

/!\ les chemins serveur (VM) et machine mère doivent être les mêmes. (surtout sur Windows apparemment).

Mes sources:

Mots clefs :
php, remote, xdebug, php, remote, xdebug