mac instalar con composer php symfony composer-php

php - mac - Problemas con la dependencia de lib-icu al instalar Symfony 2.3.x a través de Composer



instalar symfony con composer (6)

No he tenido problemas para instalar Symfony 2.2.x usando Composer, siempre he copiado la versión estable en http://symfony.com/download .

composer create-project symfony/framework-standard-edition myproject/ 2.2.1

(Tengo Composer instalado globalmente)
Curioso acerca de 2.3.0-RC1, pensé que esto funcionaría sin problemas:

composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.0-RC1

Pero se apagó por los siguientes errores:

Your requirements could not be resolved to an installable set of packages. Problem 1 - symfony/icu v1.2.0-RC1 requires lib-icu >=4.4 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it. - symfony/icu v1.1.0-RC1 requires lib-icu >=3.8 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it. - symfony/symfony v2.3.0-RC1 requires symfony/icu >=1.0,<2.0 -> satisfiable by symfony/icu[v1.1.0-RC1, v1.2.0-RC1]. - Installation request for symfony/symfony 2.3.* -> satisfiable by symfony/symfony[v2.3.0-RC1].

¿Debo modificar el archivo composer.json?

Actualización de la solución

Me faltaba la extensión php intl que proporciona lib-icu

Tan fácil, instalar y configurar la extensión intl. A partir de PHP 5.3, la extensión Intl se distribuye de manera predeterminada, pero algunas distribuciones, como MAMP, no tienen Intl, por lo que deberá adquirirla. Utilicé PEAR :

Mis pasos:

  • Instale la extensión Intl (mantenida por PECL): $ pear install pecl/intl - puede que tenga que agregar primero el canal pecl a pear.
  • Si usa MAMP y nunca ha trabajado con pear / pecl, consulte la útil publicación de blog de lullabot ; MAMP no incluye la fuente de php, por lo que debe descargar la fuente de su versión de php y mover la fuente a /Applications/MAMP/bin/php/php[version]/include/php (como se detalla en la publicación del blog) )
  • PEAR no pudo encontrar mi php.ini, así que tuve que agregar manualmente extension=intl.so a php.ini. En MAMP puedes editar php.ini fácilmente yendo a Archivo> Editar plantilla> php. [Versión] .ini

Línea de comando:

  • Al usar Composer o Symfony''s Console CLI, también necesitará Intl y dado que la CLI de php usualmente usa un php.ini diferente, también querrá agregar la directiva de extensión. Para encontrar el php.ini de su CLI simplemente haga $ php -i |grep php/.ini para descubrir la ruta del archivo y agregue extension=intl.so a ese php.ini también.
  • Para verificar si Intl está instalado, puede hacer $ php -m para verificar los módulos disponibles.

¡ Actualice su extensión php-intl , de ahí viene el error icu!

sudo aptitude install php5-intl // i.e. ubuntu brew install icu4c // osx

compruebe que la extensión esté habilitada y configurada correctamente en php.ini también.

(sugerencia: php-cli a veces usa un php.ini diferente)

php.ini

extension=intl.so ; *nix extension=php_intl.dll ; windows [intl] intl.default_locale = en_utf8 intl.error_level = E_WARNING

compruebe su phpinfo() Y php -m desde su terminal si la extensión se ha habilitado con éxito.

Verifique sus versiones actuales de php con:

Intl::getIcuVersion(); Intl::getIcuDataVersion();

atención: ya no es necesario ( symfony 2.3 ha sido liberado )

agregue la bandera de estabilidad mínima @dev o @rc a su dependencia de esta manera por favor:

composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.*@dev

La estabilidad predeterminada en el compositor es estable y la rama de Symfony 2.3 no está actualmente (es @rc). Lea más sobre los indicadores de estabilidad here .


Aquí puede encontrar una solución sobre este problema o problemas similares: ICU y Problemas de Despliegue

El comportamiento del compositor debe ser inteligente seleccionando el componente icu correcto:

  • symfony / icu 1.0. *: cuando la extensión intl no está disponible
  • symfony / icu 1.1. *: cuando intl se compila con ICU 4.0 o superior
  • symfony / icu 1.2. *: cuando intl se compila con ICU 4.4 o superior

Debería haber (teóricamente) ningún error al instalar Symfony 2.3. sin intl-extension

Pero puede quedar atrapado cuando su entorno de desarrollo difiere de su servidor de producción como se menciona en este artículo:

  • las máquinas de desarrollo se compilan con la UCI 4.4 o superior, pero el servidor está compilado> con una versión de UCI inferior a la 4.4
  • la extensión intl está disponible en las máquinas de desarrollo pero no en el servidor.

Cuando no tiene acceso de root a su servidor de producción, puede arreglarlo como se menciona en este artículo. (retocando composer.json)

Espero que esta información adicional ayude, ya que me ayudó en este caso especial con diferentes entornos.


Mac OS Mavericks viene con PHP 5.4.17 sin intl. Para obtener esto, tendrás que seguir esos pasos:

brew install icu4c sudo pecl install intl The path to the ICU libraries and headers is: /usr/local/opt/icu4c/ Edit /etc/php.ini and add extension=intl.so to the end.


Muchas aplicaciones solo admitirán la configuración regional "en" y no tendrán necesidad de capacidades de traducción o php-intl. Si es usted o no puede instalar php-intl en su servidor, puede agregar explícitamente symfony/icu ~ 1.0 a su composer.json . 1.0 no requiere php-intl, mientras que 1.1+ lo hace.

Si no necesita funciones de traducción:

$ php bin/composer.phar require symfony/icu ~1.0

Sin esta declaración e intentando instalar Symfony / Symfony 2.3, Composer puede intentar instalar Symfony / icu ~ 1.2, lo que requeriría la instalación de php-intl.

Esto se cubre explícitamente más extensamente en los documentos del componente Symfony Intl en "ICU and Deployment Problems".


Sé que esta respuesta puede no ser la correcta para el problema de esta persona, pero fue la solución a mi problema con el mismo título. Pude solucionar este problema al habilitar la extensión intl en php.ini y actualizar el compositor.

Actualizando el compositor.

php composer.phar self-update

Eliminar el comentario de esta línea (en php.ini):

extension=php_intl.dll

Y también elimine el comentario de estas dos líneas debajo de [intl] en (php.ini):

[intl] intl.default_locale = en_utf8 intl.error_level = E_WARNING

Y reinicie apache2, por supuesto. :)

Información Adicional:

Si usa mac y php instalado con Homebrew, siga estos pasos:

(PHP 5.4)

$ brew install php54-intl

(PHP 5.5)

$ brew tap josegonzalez/php $ brew tap homebrew/dupes $ brew install josegonzalez/php/php55-intl $ sudo apachectl restart

Reinicie Apache.


Una mejor solución es arreglar su composer.json a la versión requerida por el servidor de producción. Primero, determine la versión de la ICU en el servidor: 1 2

$ php -i | grep ICU ICU version => 4.2.1

Luego, arregle el componente Icu en su archivo composer.json en una versión coincidente:

"require: { "symfony/icu": "1.1.*" }

Establezca la versión en "1.0. " Si el servidor no tiene la extensión intl instalada; "1.1. " Si el servidor está compilado con ICU 4.2 o inferior.

Finalmente, ejecuta

php composer.phar update symfony/icu

en su máquina de desarrollo, realice pruebas exhaustivas y vuelva a implementar. La instalación de las dependencias ahora tendrá éxito.