Debugging en PHP en OSX usando MAMP y PHPStorm

D

Siempre que tengo que trabajar usando PHP acostumbraba a usar echo , var_dump, print_r para debugguear ( si, para ver por donde pasa y donde no pasa el script, y el contenido actual de las variables ), hasta hoy me di a la tarea de configurar el debugger de php o más bien xdebug con lo que permite debugguear como si de una aplicación de escritorio se tratara.

Configurar Xdebug

En este caso acostumbro usar MAMP como servidor en OS X que por defecto ya viene con Xdebug, solo que desactivado, para activarlo solo tenemos que modificar y agregar unas cuantas líneas en nuestra archivo php.ini que se encuentra normalmente en:

/Applications/MAMP/conf/phpX/php.ini

Versión PHP en MAMP OS X

donde X es la versión de php que estés usando, en mi caso es «5.4.10«, también localicen el siguiente archivo:

/Applications/MAMP/bin/php/phpX/conf/php.ini

Ya que en mi caso no funcionaba con el primer archivo mencionado así que modifiqué ambos.

Abrimos ambos archivos php.ini, y buscamos las líneas de configuración de [xdebug] donde encontraremos comentada la variable «zend_extension«, la descomentamos y justo después de ella agregamos las siguientes líneas:

 

xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=KEY
xdebug.remote_autostart=1

en «xdebug.remote_port» pueden poner el puerto que vayan a usar, en «xdebug.remote_host» en este caso mi servidor local ( 127.0.0.1 o localhost ), y «xdebug.idkey» puede ser lo que quieran, solo es el nombre de la sesión que usaremos para comunicarnos con el IDE.

 

Para que estos cambios sean reconocidos, debemos salvar los archivos y reiniciar nuestro servidor local, recuerden que debemos cambiar ambos archivos ya que por alguna rara situación a mi el primer archivo no lo reconocía del todo.

Configurar PHPStorm

La configuración la voy a hacer con PHPStorm ( que es un excelente IDE para aplicaciones Web ), pero es similar a la configuración en Netbeans o el IDE que utilicen, solo tienen que fijarse de las variables.

Abrimos nuestro proyecto en PHPStorm y nos dirigimos a sus configuraciones de depuración y damos click en «Editar configuraciones» ( Edit configurations…):

Configuraciones de depuración PHPStorm

 

En la ventana que aparece tenemos que darle al «+» que hay en la esquina superior izquierda y señalar «PHP Remote Debug«:

PHP Remote Debug

 

ahora tenemos que configurar nuestro servidor, dando click en el botón con tres puntos ( … ), y abajo ponemos nuestra KEY que definimos en el php.ini:

Nuevo servidor

 

Las configuraciones del servidor deben ser las mismas que pusimos en el php.ini, el nombre puede ser el que quieran solo es para reconocerlo, deben usar el puerto correcto.

configuración del servidor

Ya solo seleccionamos nuestro servidor que acabamos de crear en el combo y damos en aceptar, a mi me viene mejor marcar «Single instance» para tener corriendo solo 1 debugger a la vez eso ya depende de ustedes.

Seleccionando el servidor

 Ya casi hemos terminado, ahora viene lo que yo no sabía y no podía seguir porque no lo explicaban bien, para funcionar la «key» que definimos tiene que estar en una variable de sesión o cookie en nuestro navegador llamada «XDEBUG_SESSION» y que contenga la key que pusimos, esto hace posible que se conecte con nuestro IDE desde el navegador, podemos poner esto de forma manual o usar el generador de «bookmarks» de PHPStorm, solo ponemos nuestra KEY y le damos a generar, esto nos va a generar unos enlaces javascript (que sirven para generar esta cookie automáticamente al estar en la pestaña correspondiente), pero yo prefiero usar una extensión en Chrome llamada «Xdebug helper» que hace exactamente lo mismo pero dando click cuando queramos en la barra de direcciones.

XDebug helper

Ahora si, prometo que ya casi, si eligieron la extensión de Chrome solo tienen que configurarla ( Click derecho sobre el escarabajo y configuraciones ), de nuevo solo poniendo nuestra KEY y los dominios donde queramos tener el plugin funcionando, en este caso para mi solo «localhost»:

Xdebug helper ChromeSi usaron los bookmarks, tienen que darle click al bookmark correspondiente cuando quieran tenerlo activo, o poner la cookie manualmente.

Bien, ya en la recta final, debemos activar en nuestro IDE el listener de conexiones debug, es el teléfono que aparece en la barra de herramientas y al darle click el icono que antes tenía un símbolo de prohibido ahora tendrá unas ondas verdes:

debug listener debug listener

 

Y dar click al escarabajo para comenzar a debuggear ( asegúrate de tener seleccionado el debug que configuramos en el combo de a lado ):

Debug PHPStorm

Si lo hemos hecho todo bien nos saldrá la ventana de debug lista y escuchando las conexiones entrantes:

Debugger PHPStorm

 

 

ponemos un punto de quiebre en nuestro archivo php y lo ejecutamos desde el navegador

 

PHP breakpoint

 

 

Y al llegar el script a la línea marcada podremos comenzar  debuggear tranquilamente.

 

Debugueando en PHPStorm

 

He tratado de que sea claro, aunque puede haber algunas dudas, así que cualquiera que haya me la pueden hacer saber para resolverla, sin hablar de que, muy a parte de que es «más profesional», es mucho más fácil trabajar así para saber exactamente lo que pasa paso a paso en nuestro script sin tener que añadir líneas de más al código que luego hay que borrar XD.

Todos los comentarios son bien recibidos, si es para agradecer, preguntar o incluso para corregir cualquier error que pueda tener, un saludo y hasta una próxima entrada.

 

 

 

Acerca del autor

Mxrck

Ingeniero en Sistemas Computacionales, amante de la tecnología, los videojuegos, la programación.

Siempre aprendiendo algo nuevo.

"Always Thinking"

Por Mxrck

Categorías

Etiquetas