Instalando Symfony en Mac OSX

Una de los cosas que tení­a pendientes por hacer en el MacBook era instalar Apache+Mysql+PHP y probar Symfony, uno de los más famosos frameworks para el desarrollo rápido de aplicaciones web en PHP.

Lo primero no pudo ser más fácil, pero lo segundo ya me costó bastante más, por lo que me he decidido a escribir mi experiencia, por si a alguien le sirve.

Para instalar Apache+MySQL+PHP no hay más que descargarse MAMP (actualmente, versión 1.7) e instalarlo como cualquier otra aplicación en OSX. Una vez instalado podremos comprobar su funcionamiento ejecutando la aplicación, y viendo como lanza los servicios de apache y mysql, junto a la página de inicio de Apache en el navegador.

El problema viene con Symfony. Intenté instalarlo tal como lo describen en esta web, pero, primero por mi inexperiencia con Mac, y después por diferentes errores enlazando librerí­as, no fui capaz de hacerlo funcionar (aunque sí­ me ha servido como excelente base para este documento).

Lo primero que hay que hacer es abrir un terminal y añadir al path de nuestro sistema las siguientes rutas, editando para ello el archivo /etc/profile (válido para todos los usuario del sistema):


# sudo nano -w /etc/profile

Una vez abierto, modificamos la lí­nea del PATH y añadimos la de DYLD_LIBRARY_PATH:

PATH="/Applications/MAMP/bin:/Applications/MAMP/bin/php5/bin:
/bin:/sbin:/usr/bin:/usr/sbin"

export PATH

export DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib"

y guardamos el fichero (ctrl+x en el editor nano, se puede utilizar cualquier otro editor a tu gusto ;) ). Fijáos que añadimos las rutas ANTES del path que ya existí­a. De esta forma nos aseguramos que los comandos que utilizaremos son los que acabamos de instalar con MAMP (muy importante, ya que si no, utilizarí­a, por ejemplo, el php que lleva OSX por defecto)

La segunda lí­nea he tenido que añadirla, ya que al ejecutar pear o symfony más tarde, no encontraba la ruta de las librerí­as.

Ahora ya podemos ejecutar el pear y el php recién instalados mediante MAMP. Para instalar symfony necesitamos identificarnos como root, utilizando sudo, y ejecutando peardev (con pear no funciona por un error en los lí­mites de memoria de php. Esto se puede solucionar editando el archivo php.ini y cambiando memory_limit a 16M, por ejemplo, como indica noelmf en los comentarios). En la web que he enlazado anteriormente indicaba ejecutar lo siguiente:


# sudo peardev channel-discover pear.symfony-project.com
# sudo peardev install symfony/symfony

Aquí­ he tenido otro problema: aunque habí­a añadido la ruta de las librerí­as en el profile, si ejecutaba el comando con sudo, el path funcionaba pero la ruta de la librerí­a no :S (si hay algíºn entendido de Mac, por favor, que deje sus comentarios al final…). Para solucionar este tema, lo que he hecho ha sido crear un archivo instalarsymfony.sh con el siguiente contenido:


#/bin/bash
peardev channel-discover pear.symfony-project.com
peardev install symfony/symfony

y después ejecutar este script como root, tras darle permisos de ejecución:


# chmod +x instalarsymfony.sh
# sudo instalarsymfony.sh

Actualizado 26/09/07: Como nos comenta Marino, podemos evitarnos este paso entrando como root mediante “sudo su -” y ejecutando allí­ los los comandos de peardev anteriores (la explicación, en el primer comentario)

Por fin, tenemos instalado Symfony. Podemos comprobarlo con el comando:


# symfony -V

Este comando nos muestra la versión instalada de Symfony, en mi caso, la 1.0.7.

Para comprobar que todo funciona correctamente, vamos a crear un proyecto y a configurar Apache con un host virtual. Lo primero es crear un directorio nuevo en nuestro home, el proyecto symfony (symfony_project, por ejemplo) y la aplicación inicial para ese proyecto (symfony_app, para seguir la nomenclatura anterior):


# mkdir symfony_project
# cd symfony_project
# symfony init-project symfony_project
# symfony init-app symfony_app

Ahora debemos configurar un host virtual en Apache, modificando el archivo /Applications/MAMP/conf/apache/httpd.conf


# nano -w /Applications/MAMP/conf/apache/httpd.conf

y añadimos estas lí­neas al final del fichero:


<VirtualHost *:80>
ServerName example.symfony_project.com
DocumentRoot "/users/ramses/symfony_project/web"
DirectoryIndex index.php
Alias /sf /Applications/MAMP/bin/php5/lib/php/data/symfony/web/sf
<Directory "/Applications/MAMP/bin/php5/lib/php/data/symfony/web/sf">
AllowOverride All
Allow from All
</Directory>
<Directory "/users/ramses/symfony_project/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>

Tras esto, en MAMP he modificado el puerto de Apache, poniendo el 80 (preferencias->usar los puertos por defecto de Apache y MySQL) y reiniciamos los servicios (detener servidores-iniciar servidores). Actualizado 26/09/07: Como bien nos recuerda Mariano en los comentarios, para poder ejecutar el Apache de MAMP en el puerto 80, es necesario no tener corriendo el Apache original de Mac OSX (preferencias->compartir->compartir web)

Ahora sólo tenemos que abrir una ventana de nuestro navegador favorito e ir a la dirección que hayamos creado. En mi caso http://localhost/symfony_app_dev.php/

symfony.jpg

Enlaces interesantes:
Web oficial de Symfony
Comunidad española sobre Symfony
Documento de referencia sobre cómo instalar Symfony sobre MAMP

33 Responses

  1. Marino September 26, 2007 / 1:57 am

    El problema que tienes con las variables de entorno que no cargan es por que no carga el perfil al hacer un sudo. Es decir, cambia de usuario pero no carga el perfil para ese nuevo usuario.

    Para ponerte como root cargando el perfil completo, los pasos serí­an:

    sudo -s

    Con esto abres una shell como root (sin haber cargado aun el perfil, ojo). Sigues en el mismo problema que antes, pero ya estas en la shell como root. A continuación haces:

    su –

    Con esto abres otra shell como root y esta vez (gracias al guión final) si que carga todo su perfil y variables de entorno.

    Explicado el funcionamiento, se puede abreviar en:

    sudo su –

    Que te deja en una shell nueva. Hay que tener en cuenta que al haber entrado completamente como root, ha cambiado el directorio de la shell, por lo que estarás en el home de root (/var/root) y no en el directorio inicial donde descomprimiste los ficheros.

    Un simple exit de la shell al terminar te devuelve a la shell anterior, quedando donde estabas.

    Un saludo.

  2. Marino September 26, 2007 / 2:07 am

    Ah, otra cosita, que acabo de caer. Veo que usas el puerto 80 para el Apache del MAMP. Si tienes activado el Apache del Mac OS X, se va a dar un castañazo el del MAMP y no va a arrancar. En ese caso, o utilizas otro puerto, o paras el del Mac OS (Preferencias del sistema, Compartir, Compartir Web).

    Y gracias por la guí­a, a ver si me decido a probar Symfony, que estoy entre ese o Kumbia.

  3. ramses September 26, 2007 / 7:29 am

    Hola Marino,

    Gracias por tus comentarios, sobre todo por el primero, gran explicación. El segundo, en efecto, hay que tener el Apache de Mac OSX desactivado para poder utilizar el puerto 80. Era obvio, pero mejor aclararlo, muchas gracias. Procedo a actualizar la entrada ahora mismo ;)

  4. Fernando November 6, 2007 / 4:26 pm

    Hola, gracias por el tutorial. Pero no consigo solucionarlo.
    Cuando le pido me instale symfony “peardev install symfony/symfony”, me da el siguiente error: “symfony/symfony requires PHP (version >= 5.0.0), installed version is 4.4.7” que es justo el que está instalado en el MacOsX, pero no el del MAMP en cuyo directorio me he situado previamente con privilegios de root “/Applications/MAMP/bin/php5/bin”.

    He intentado hacerlo de mil formas, pero siempre me detecta el PHP4 que viene por defecto con la máquina. A esto hay que añadir que no tengo ni puñetera idea de la cónsola del mac…

    Muchas gracias de antemano.

  5. ramses November 6, 2007 / 4:42 pm

    Hola Fernando,

    el problema lo tienes en el $PATH, ¿lo has modificado? Da igual que te coloques en el directorio del php del MAMP, al ejecutar peardev busca en el PATH…

  6. Fernando November 7, 2007 / 12:35 pm

    Perdona Ramses, pero sí­ que he modificado el path, incluso he vuelto a entrar varias veces a comprobarlo y el path aparece con la ruta que pones en el tutorial.
    Y me vuelve a sacar esto:
    —————————————————————
    symfony/symfony requires PHP (version >= 5.0.0), installed version is 4.4.7
    No valid packages found
    install failed
    —————————————————————
    Claro que igual tengo que reiniciar la máquina. Pruebo y ahora te cuento…

  7. Fernando November 7, 2007 / 12:47 pm

    Nada, sigue ocurriendo lo mismo. Te pongo lo que pone en el archivo profile:
    # System-wide .profile for sh(1)
    —————————————————————
    PATH=”/Applications/MAMP/bin:/Applications/MAMP/bin/php5/bin:/bin:/sbin:/usr/bin:/usr/sbin”
    export PATH

    export DYLD_LIBRARY_PATH=”/Applications/MAMP/Library/lib”

    if [ “${BASH-no}” != “no” ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
    fi
    —————————————————————
    Quizás tengo que quitar esto último?:
    —————————————————————
    if [ “${BASH-no}” != “no” ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
    fi
    —————————————————————

  8. ramses November 7, 2007 / 8:06 pm

    Hola de nuevo, Fernando…

    Me parece muy extraño… ¿Estás como root entrando con sudo su -? ¿Puedes mostrar la salida de “echo $PATH” y de “php -v”?

  9. Fernando November 8, 2007 / 3:30 pm

    Gracias, ya me funciona. Debe ser que no habí­a reiniciado bien o algo así­…Sigo con el tutorial a ver que tal…

  10. Fernando November 8, 2007 / 3:38 pm

    :-( Ahora me sale esto:symfony PHP Framework
    ok
    Symfony Project Created
    Congratulations! You have successfully created your symfony project.

    Project setup successful
    This project uses the symfony libraries. If you see no image in this page, you may need to configure your web server so that it gains access to the symfony_data/web/sf/ directory.
    This is a temporary page
    This page is part of the symfony default module. It will disappear as soon as you define a homepage route in your routing.yml.
    What’s next

    * Create your data model
    * Customize the layout of the generated templates
    * Learn more from the online documentation

    Pero no me sale la página de inicio con sus estilos e imagencitas… ¿Sabes que es lo que me ocurre?

  11. noelmf December 3, 2007 / 9:01 am

    Hola,

    Para evitar el error de pear, lo que hay que hacer es modificar el campo ‘memory_limit’. El valor por defecto es 8M, con 16M sera suficiente.

    Un saludo!

  12. noelmf December 3, 2007 / 9:03 am

    Perdon, se me olvido decir que archivo hay que editar para modificar ‘memory_limit. El archivo que hay que modificar es php.ini.

    Un saludo!

  13. ramses December 3, 2007 / 7:22 pm

    Gracias por tu comentario, noelmf. Lo añado a la entrada como otra posible solución para realizar ese paso…

    Un saludo.

    ramses

  14. Miquel February 4, 2008 / 6:42 pm

    Buenas, mi problema está en el memory limit, aunque lo cambie a 16, cuando reinicio el apache se me vuelve a poner a 8…

  15. ramses February 4, 2008 / 7:27 pm

    ¿Qué archivo estás modificando? Asegurate de que es /Applications/MAMP/conf/php5/php.ini …

  16. Miquel February 5, 2008 / 8:56 am

    Buenas ramses,

    Este fichero lo modifiqué y lo dejé a “24M”, pero creo que el apache no lo utiliza, porque al hacer un phpinfo() sale que el php.ini que utiliza está ubicado en /Library/Application\ Support/living-e/MAMP\ PRO/conf/php.ini, este es precisamente el fichero que al modificar el memory limit de 8M a 24M, cuando luego reinicio el apache, me lo vuelve a poner a 8M, lo he editado con sudo su -, etc., pero nada…, todo esto es nuevo para mi y voy un poco perdido :_

  17. ramses February 5, 2008 / 10:13 am

    ¿Qué MAMP estás utilizando, el básico o el PRO? Lo digo por la ruta que pones…

    Comprueba también los puertos. ¿En cuál ejecutas el MAMP? ¿Sigue activo el servidor apache de OSX? Si vas a utilizar MAMP, lo mejor es desactivar el apache de OSX y poner el puerto 80 al apache del MAMP…

  18. Miquel February 5, 2008 / 12:39 pm

    Buenas de nuevo ramses,

    Estoy utilizando el PRO, diria que utilizo el puerto 80 (hice un virtualHost en el httpd.conf), el servidor apache de MAC está desactivado (es lo de preferencias -> compartir web, verdad?)…, haciendo un VirtualHost y diciendole que utilize el puerto 80 supongo que afecta al MAMP, no?

    Muchí­simas gracias

  19. Miquel February 6, 2008 / 6:49 am

    Vaya!, parece que ya lo he solucionado, por lo que he visto, el MAMP PRO, utiliza como un sistema de templates que carga cada vez que se reinicia, entonces, cuando cambiaba el memory limit y reiniciaba apache pasaba de todo…., la solución és fácil…, solo hay que ir al menú de MAMP PRO -> File -> Edit template -> PHP 5 php.ini i modificarlo des de allí­… En fin…, cosas que pasan jejeje.

    Muchas gracias ramses por tu ayuda, seguiré este blog ;)

    Saludos!

  20. ramses February 6, 2008 / 8:11 am

    Vaya, me alegro, Miquel :D Por fin hemos dado con el tema… me parecí­a muy raro todo, y lo único diferente era el MAMP, así­ que por ahí­ debí­an ir los tiros. Lo dicho, enhorabuena ;)

    Un saludo.

    ramses

  21. Adrian February 23, 2008 / 6:01 pm

    Muy buen tutorial, felicitaciones.

    Quisiera agragar algo. Al modificar el archivo /etc/profile, tuve que agregar un path adicional a Applications/MAMP/bin/apache2/bin, sino no me reconocia los comandos de mysql. Quedaria como:

    PATH=”/Applications/MAMP/bin:/Applications/MAMP/bin/php5/bin:
    /bin:/sbin:/usr/bin:/usr/sbin:/Applications/MAMP/bin/apache2/bin”
    export PATH

    Saludos

  22. Corachán July 8, 2008 / 5:45 pm

    Oye, sí­mplemente agradecer al amigo Miguel el compartir su descubrimiento, yo también usaba MAMP Pro y no conseguí­a editar el maldito archivo. Siempre me volví­a a 8M.

    Pues eso, al menos problema solucionado y Symfony funcionando :-)

    Un saludo!!!

  23. ramses July 8, 2008 / 6:06 pm

    Saludos alicantinos, Corachán ;)

  24. pablo October 16, 2008 / 4:13 pm

    cuando lo trato de instalar me da un proble, que va a buscar la libreria libltdl.3.dylib a un path que no existe, a que se debe esto y como lo puedo solucionar????

  25. pablo October 16, 2008 / 4:17 pm

    solo para aclarar mi duda,
    es cuando corro el comando “sudo peardev install symfoy/symfony-1.1.4”
    y me da como resultado el siguiente error:
    dyld: NSLinkModule() error
    dyld: Library not loaded: /Users/severin/Dev/Projects/MAMP_1.7_src/lib/libltdl.3.dylib
    Referenced from: /Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20050922/mcrypt.so
    Reason: image not found
    Trace/BPT trap
    espero una respuesta de su parte gracias

  26. ramses October 20, 2008 / 11:56 am

    :S Un poco raro, el error, Pablo… ¿has seguido todos los pasos anteriores? ¿Te funciona MAMP correctamente? ¿Es el normal o el pro?

  27. pablo October 24, 2008 / 1:16 am

    ya logre corregir los error ramses, te lo agradezco

  28. Dani December 2, 2008 / 10:18 pm

    Muchas gracias por este excelente manual

  29. Juan Carlos May 25, 2009 / 7:31 pm

    Hola, tengo un problema, estoy usando Mamp y Symfony pero no se como puedo poner los drivers PDO para Mysql, me da error.

    Alguien puede ayudarme?

  30. ramses May 27, 2009 / 4:39 pm

    Hola Juan Carlos,

    No sé muy bien a qué te refieres… MAMP lleva integrado el servidor de MySQL, Apache con el módulo de MySQL… y symfony, para configurar la base de datos a utilizar en el proyecto, puedes hacerlo a través del CLI o del databases.yml.

  31. Zeva March 2, 2010 / 1:49 am

    PDO es una capa de abstracción para conectarse a bases de datos, que php 5 en adelante trae por defecto…

    soy nuevo en el mundo mac, veré que tal me resulta la instalación. gracias por la guí­a

  32. lesly Quiñonez October 10, 2010 / 10:06 pm

    hola ramses yo soy nueva en mac tambien estoy usando symfony 1.4.8 y quiero generar la base de datos con symfony propel:build-schema, pero me sale este error:

    >> propel Running “reverse” phing task
    [propel-schema-reverse] There was an error building XML from metadata: SQLSTATE[HY000] [2002] No such file or directory

    y ya he intentado millones de cosas jj me ayudo muchisimo tu documento jj pero en esta parte no se que hacer ayudaaa!! pls jj gracias

Leave a Reply

Your email address will not be published. Required fields are marked *