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 2010Informació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.