Desplegando en una Raspberry Pi Parte III (Depurando con XDebug)

Finalmente suele ser útil y práctico poder depurar las aplicaciones, principalmente he manejado dos sistemas de depuración en PHP, XDebug y Zend Debugger, Zend Debugger es propietario y XDebug es libre, el problema principal viene dado porque el binario de Zend Debugger no está disponible para la arquitectura arm de Raspberry así que optaremos por XDebug.

Así mismo hay varios editores que permiten depurar con XDebug, en este caso el ejemplo lo hago con PHPStorm, primero hay que hacer la configuración del lado servidor.

Una vez instalado el módulo de XDebug (verificar con phpinfo()) tendremos que configurarlo, editamos el fichero xdebug.ini y establecemos los siguientes valores.

zend_extension=/usr/lib/php5/20131226/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
zdebug.remote_mode=req
xdebug.remote_host=192.168.1.99
xdebug.remote_port=9000
xdebug.idekey="phpstorm"

Lo importante aquí es establecer como xdebug.remote_host la dirección IP del cliente, es decir donde está instalado PHPStorm que es desde desde donde queremos depurar y lo mismo para el puerto, estas opciones normalmente son configurables a partir del entorno pero el puerto por defecto 9000 es estándar.

xdebug.idekey es un valor que se pasa al depurador para identificar la sesión no es necesario establecerlo pero suele ser buena idea indicar el mismo que el IDE usado.

Si se quiere poder depurar desde cualquier máquina se puede usar el valor xdebug.remote_connect_back, para más detalles ver aquí.

Como ya vimos una buena opción es compartir vía Samba la carpeta de Apache de la Raspberry y usarla para editar directamente los ficheros eso nos ahorra de cara a PHPStorm el paso de desplegar, por lo tanto de cara a crear un nuevo proyecto en PHPStorm indicamos que trabajaremos en local con la ventaja añadida de que tendremos también git integrado (si está configurado git en la carpeta del servidor).

Ahora solo nos queda desde el menú «Run» usar la opción «Start Listening for PHP Debug Connections«.

Ahora desde aquí creamos los enlaces que se usará para arrancar el depurador y conectar al cliente, lo recomendable es arrastrarlos a la barra de navegación del navegador que estemos usando, principalmente usaremos «Start debugger«.

Una vez que empiece el sistema de depuración PHPStorm nos mostrará una ventana en la que nos indicará cual es el mapeo correspondiente entre el fichero a depurar y la ubicación física del mismo, si no puede realizar esta asociación al crear un punto de interrupción aparecerá éste con una X indicándolo, esto es muy probable que pase para los ficheros fuente que están fuera de las carpetas públicas (habitual si se usa frameworks tipo Symfony) en ese caso desde «Run -> Edit Configurations» veremos debajo de «PHP Remote Debug» el host detectado dentro de éste solo tenemos que indicar los mapeos correspondientes dentro del servidor (las rutas físicas de Linux), es necesario pulsar enter para que se quede la ruta establecida.

 

Desplegando en una Raspberry Pi Parte III (Depurando con XDebug)