Powered By Blogger

lunes, 14 de mayo de 2012

Depurar con Xdebug de forma remota estando detrás de un firewall

¿Quieres depurar tu código PHP con Xdebug pero te encuentras detrás de un router, un proxy o un firewall que no administras? Si puedes conectarte al servidor por SSH, no hay ningún problema: basta con utilizar un túnel SSH.

Lo que haremos es modificar php.ini para que Xdebug envíe el tráfico al propio servidor remoto (xdebug.remote_host = localhost) y lanzar un SSH desde nuestra máquina indicando al cliente que redireccione el tráfico del puerto 9000 del servidor (puerto por defecto de Xdebug) a un puerto de nuestra máquina donde nuestro IDE esté a la espera del depurador:

ssh -R 9000:localhost:9000 usuario@servidor.com

Si utilizas Windows y prefieres las aplicaciones gráficas, puedes utilizar indistintamente el cliente de SSH y telnet PuTTY, o cualquiera de sus alternativas, como mi favorito, KiTTy. Sólo tenemos que introducir el servidor y el puerto al que queremos conectarnos en Session, y configurar el túnel en Connection -> SSH -> Tunnels. En Source port (puerto de orígen) introduciremos el puerto al que está enviando la información Xdebug en el servidor y en Destination (destino) la máquina y el puerto al que queremos redireccionarlo. Por último, marcaremos la casilla Remote (remoto) y, muy importante, pulsaremos el botón Add (Añadir) para confirmar la redirección.

Túnel SSH para depurar con Xdebug detrás de un firewall

Una vez hecho esto, ya podremos depurar el código con Xdebug aunque nos encontremos detrás de un firewall. Si no es así, activa la opción de registro de Xdebug (xdebug.remote_log = /ruta/archivo/log) y comprueba que tu cliente SSH esté efectivamente escuchando en el puerto 9000 del servidor

netstat -an | grep 9000



No hay comentarios: