4JanDebugging PHP en MacOS X

Hace unos días me decidí a poner a punto de nuevo mi MacBook y una de las cosas que he tenido que hacer es volver a configurar el debugger para PHP, concretamente XDebug. Me ha llevado mi tiempo y algunas búsquedas en Google así que he decidido compartir los pasos con todos vosotros. ¡Dispongámonos a ello!

Antes de nada debo decir que estos son los pasos que he seguido para instalar XDebug para PHP 5.2 usando MAMP Pro 1.8.4 bajo MacOS X Snow Leopard. Es posible que, si tenéis una configuración distinta, los pasos puedan variar un poco.

En primer lugar debemos descargarnos los binarios de XDebug en esta URL: http://aspn.activestate.com/ASPN/Downloads/Komodo/RemoteDebugging.

Descomprimimos el archivo .tgz que nos acabamos de descargar y veremos que hay una estructura de directorios que representa las diferentes versiones de PHP. Yo actualmente estoy utilizando PHP 5.2 (la que en estos momentos incluye por defecto MAMP y MAMP Pro) así que copiaré el fichero xdebug.so que hay dentro de esta carpeta.

Este archivo xdebug.so deberemos copiarlo en el directorio de extensiones de PHP, en MAMP es /Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20050922/.

Ahora deberemos añadir algunas líneas a nuestro php.ini para activar y configurar la extensión. La localización habitual del fichero php.ini en MAMP es /Applications/MAMP/conf/php5/php.ini pero (¡OJO!) si utilizáis MAMP Pro las modificaciones en este fichero serán en vano. Esto es debido a que MAMP Pro carga su propia copia del php.ini que se localiza en /Applications/MAMP PRO x.x.x/MAMP PRO.app/Contents/Resources/php5.ini (accediendo haciendo clic con botón derecho sobre la app de MAMP Pro y “Mostrar contenido del paquete“).

Una vez localizado el php.ini adecuado, debemos añadir la siguiente línea:

[xdebug]
zend_extension="/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"

Si utilizáis el editor TextMate para programar, añadid también esta línea a continuación para que el debugger muestre los errores como enlaces a TextMate en la línea correcta:

xdebug.file_link_format = "txmt://open?url=file://%f&line=%l"

Si además váis a utilizar MacGDBp para debuggar y queréis que se ejecute el debugger por defecto (si lo tenéis abierto) podéis añadir también (sino deberéis añadir ?XDEBUG_SESSION_START=macgdbp a vuestra URL cada vez para iniciar el debugger):

xdebug.remote_enable = On
xdebug.remote_autostart = 1

Para que funcione todo correctamente posiblemente deberemos desactivar el Zend Optimizer, que viene activado por defecto en MAMP.  Para ello, comentamos las siguientes líneas:

;zend_optimizer.optimization_level=15
;zend_extension_manager.optimizer=/Applications/MAMP/bin/php5/zend/lib/Optimizer-3.3.3
;zend_optimizer.version=3.3.3

Ahora debéis reiniciar el servidor Apache y ya podréis comenzar a debuggar vuestras aplicaciones en PHP. Si ha funcionado ya os daréis cuenta de que los errores se muestran en una tabla muy colorida y hay una mejora muy sustancial a la hora de mostrar los resultados de var_dump.

Espero que os sea de utilidad y si tenéis problemas acudid a los comentarios para intentar resolverlos entre todos. ¡Salu2!

Fuentes

debuggable.com – http://debuggable.com/posts/setting-up-xdebug-on-mac-os-x-or-win32-linux:480f4dd6-0240-4a90-8fa1-4e41cbdd56cb

Techno Sophos – http://technosophos.com/content/debugging-your-php-code-xdebug-mamp-textmate-and-macgdbp-support

3 Responses and Counting...

  • Bitacoras.com

    January 4th 2010

    Información Bitacoras.com…

    Valora en Bitacoras.com: Hace unos días me decidí a poner a punto de nuevo mi MacBook y una de las cosas que he tenido que hacer es volver a configurar el debugger para PHP, concretamente XDebug. Me ha llevado mi tiempo y algunas búsquedas en Google …..

  • Rubén

    Muy bueno !!! Muchas gracias. Con la versión actual de MAMP gratis funciona siguiendo las instrucciones que comentas…

  • Tudor

    This post would be interesting to have in English.