Parche OSX y MAMP con Macports

Esta mañana he instalado el último parche de seguridad de OSX. Siempre me gusta tenerlo todo a la última por si las moscas, y con las actualizaciones Apple no me había ocasionado ningún problema hasta ahora. Ojo, que yo creo que ha sido esa actualización, que tiene huevos que ayer me funcionara y esta mañana me he levantado, he hecho la actualización y ¡¡voilá!!, ya no me funcionaba nada…

Apache no arrancaba y me decía que un montón de librerías de mi /opt/local/lib tenían la arquitectura incorrecta:

libexpat.1.dylib: mach-o, but wrong architecture

El caso es que he tenido que rehacer la instalación completa (Apache, MySQL, PHP). Hasta he vuelto a instalar las XCode Tools por si con eso se arreglaba todo, pero no habia manera.

Bueno, el tema ha estado en que he tenido que hacer de nuevo toda la instalación de MAMP con Macports. Cual es mi sorpresa cuando a mitad de instalación, cuando iba por la mitad de la instalación de MySQL me ha dado un error, concretamente poniendo el password al usuario root:

mysqladmin5 -u root -p password <new-password>

Me decía algo como que no encontraba el socket de conexión a mysql “/opt/local/var/run/mysql5/mysqld.sock”. ¿Cómo podía ser? ¿¿Recien instalado todo?? Al principio he creido que podía ser algún problema de permisos pero nada más lejos de la realidad. He ido a la carpeta y efectivamente, el archivo mysqld.sock no estaba.

Después de darle muchas vueltas, de desinstalar y vuelta a instalar como unas seis veces me he dado cuenta que el archivo se creaba al instalar el servidor de mysql mediante la orden sudo port install mysql5-server pero que desaparecía en algún paso de la explicación. Siguiendo paso a paso he descubierto que la línea que hace que se cargue el servidor de mysql en el arranque del sistema borraba el socket de conexión…

Si si, como lo estás leyendo. La orden

sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

borra el socket de conexión. Así es que si a alguien le pasa lo mismo que haga lo que he hecho yo… pasar olimpicamente de esa linea.

Son las 23:18 y me voy a la cama.

Gracias Mr Jobs por este gran día de alopecia estresil.

Xdebug en MAMP

Loco! Me he vuelto loco para conseguir que funcionara el xdebug en el MAMP para hacer debugging de mi código php en Netbeans. Llevaba tiempo queriendolo instalar pero ni por asomo me habría imaginado que me iba a costar tanto.

Siguiendo las instrucciones de la página de netbeans que explica como instalar xdebug al hacer phpize para compilar el xdebug que genera el archivo xdebug.so siempre me daba el mismo error:

Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.

Buscando como alma que lleva al diablo, todas las páginas que encontraba me armaban un cacao de cojones. Hasta me hice una cuenta developer en .mac para descargarme XCode Tools por si fuera eso (lo pone como sugerencia por si no te funciona el make).

En fin, no me entretengo, al final ha sido tan facil como descargarse un xdebug.so ya compilado y utilizarlo en otra carpeta a la que dice el tutorial (osea, nada de lo que dice…).

Despues de mucho buscar llegué a esta página donde había una explicación detallada de como hacer que funcionara xdebug (pero sin suerte para mí como en las anteriores 107). Gracias a San Dios había un enlace a los Komodo Debugger Extensions, que tiene enlaces a la ultima version de xdebug compilada.

Aleluya!! Ya tenía el dichoso archivo sin tener que compilar, saltandome unos cuantos pasos del tutorial. Descargué la última versión para Mac Osx de PHP Remote Debugging de la sección Komodo 5.1 Remote Debugging Packages. Descomprimí ese y había varias carpetas. Cogí el de la versión 5.2 porque rebuscando por google buscando Komodo, encontré esta página donde explica como instalar xdebug en Leopard, es decir lo mismo que estoy explicando yo, menos de donde sacar el xdebug.so compilado.

Una cosa importante es deshabilitar el PHP Zend Optimizer que trae por defecto acivadoel MAMP, así es que desde la ventana de MAMP ya estas tardando en desactivarlo.

En fin, puse el archivo xdebug.so en el directorio “/Applications/MAMP/bin/php5/xdebug” y al final del fichero de configuración de php5 en MAMP “/Applications/MAMP/conf/php5? puse lo siguiente:

; xdebug config for Linux and Mac OS X
zend_extension=/Applications/MAMP/bin/php5/xdebug/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=jeffg
xdebug.profiler_enable=1
xdebug.profiler_output_name=xdebug.cachegrind-out.%s.%p

En la entrada “remote_port” es muy importante poner el mismo puerto que está configurado en NetBeans para poder hacer debugging desde el propio IDE. Este se puede cambiar desde las preferencias de NetBeans en la sección PHP, por defecto está a 9000 y para que nos vamos a complicar, yo lo dejé igual.

Una vez hecho esto y habiendo reiniciado MAMP, haciendo un phpinfo() podremos saber si xdebug está bien instalado. Si lo está nos saldrá una linea como esta:

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with Xdebug v2.0.4, Copyright (c) 2002-2008, by Derick Rethans

Cuando se empiece a hacer debugging desde NetBeans en la parte inferior derecha debe aparecer netbeans-xdebug [ running ]. Si aparece algo como netbeans-xdebug [ waiting ] o algo parecido, revisalo todo porque algo tienes mal, seguramente algo en el php.ini está mal escrito.

Espero que ayude a alguien…