Debugging 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


Enero 4th, 2010 a las 13:28
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 …..
Enero 17th, 2010 a las 18:19
Muy bueno !!! Muchas gracias. Con la versión actual de MAMP gratis funciona siguiendo las instrucciones que comentas…