Debug remoto con Eclipse PDT y Xdebug
Mas de uno pensara que es una boludez y un riesgo de seguridad hacer esto (¡y tiene razón dependiendo de donde hagas esto!), pero piensen por un segundo que trabajan en una empresa en la que los servidores de desarrollo son justamente eso, servidores de desarrollo, y son para probar los cambios que hiciste en tu propio ordenador.
Bien, sumále que trabajas en Windows y necesitas hacer debug para una característica que solo funciona correctamente en Linux. A que ahora tiene un poco más de sentido hacer esto 🙂
Bueno basta de intro, vamos a lo que vamos.
El entorno que usé es el siguiente:
Un ordenador con Windows XP que vamos a usar para hacer debug (A.K.A. “el cliente”).
Un servidor con Ubuntu 9.10 Edición Server o Desktop (A.K.A. “el servidor”).
NOTA: puede que no te haga falta específicamente estas versiones, pero son las que use para este tutorial.
- Primero instalen en el cliente Eclipse y xampp. Prueben que funcione correctamente.
En el servidor compartan la carpeta en la que tienen instalada la página Web que pretenden debuggear (la carpeta de la página, NO “www”):
De nuevo en Windows, conéctense a un dispositivo de red (click derecho sobre “Mi PC” que ahí lo pueden ver). Puede seguramente les pida que se autentiquen con un usuario que tenga los privilegios adecuados sobre la carpeta que tiene el proyecto en el servidor:
NOTA: Puede ser que cuando quieras guardar los cambios que hayas hecho sobre los archivos desde eclipse te de un error de permisos al escribir contra el servidor. La solución es cambiar los permisos de proyecto a 777 (chmod –R 777 carpeta_proyecto).
Ya podemos acceder al proyecto en el servidor remoto, por lo que vamos al Eclipse y creamos un proyecto de PHP como siempre, seleccionamos la unidad que se le haya asignado a la conexión del dispositivo de red y damos a finalizar.
OK, ya podemos trabajar con Eclipse sobre los archivos remotos, y eso es bueno (o no) pero el objetivo de este tutorial es el de poder debuggear, así que sigamos.
Ahora del lado del servidor hacemos lo siguiente:
Instalamos en el servidor un Xdebug.
Cuando esté instalado vamos a cambiar un parámetro de la configuración. Editemos el archivo de configuración de Xdebug:
1 |
sudo gedit /etc/php5/apache2/conf.d/xdebug.ini |
Busquen xdebug.remote_host y pongan por valor la IP del cliente.
Reinicien:
1 |
sudo /etc/init.d/apache2 restart |
OK. Ya tenemos el servidor que escucha al cliente por el puerto 9000, y en Eclipse tenemos montado un proyecto PHP que toma los archivos de la unidad de red conectada al servidor… Hagamos el debug!
Vamos a las preferencias de Eclipse creamos un nuevo PHP Server como podemos ver en la imagen, completando el nombre que queramos y la IP del servidor:
Vamos terminando ya. Solo nos queda configurar el debug de nuestro proyecto. Vamos a “debug configurations…” y creamos un nuevo perfil de “PHP Web Page”:
En esta imagen podemos ver como he seleccionado el servidor que acabo de crear “Servidor Remoto” y desmarque el “Auto generate” para poder poner el path real hasta el archivo index.php de mi proyecto sobre el servidor.
Listo amigo. Poné un breakpoint y happy debug!.