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 a nivel mundial)
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].
¿Necesito 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, instale y configure la extensión intl. A partir de PHP 5.3, la extensión Intl se distribuye de forma predeterminada, pero algunas distribuciones, como MAMP, no tienen Intl, por lo que deberá adquirirla. Solía PERA :
Mis pasos:
- Instale la extensión Intl (mantenida por PECL):
$ pear install pecl/intl
- es posible que primero deba agregar el canal pecl a pear. - Si usa MAMP y nunca ha trabajado con pear / pecl, consulte la útil publicación del blog de lullabot ; MAMP no se envía con 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 explica en la publicación del blog) - PEAR no pudo encontrar mi php.ini, así que tuve que agregarlo manualmente
extension=intl.so
a php.ini. En MAMP puede editar php.ini fácilmente yendo a Archivo> Editar plantilla> php. [Versión] .ini
Línea de comando:
- Cuando use Composer o la CLI de la consola de Symfony, también necesitará Intl y, dado que la
php
CLI generalmente usa una diferentephp.ini
, querrá agregar la directiva de extensión allí también. Para encontrar el php.ini de su CLI simplemente haga$ php -i |grep php\.ini
para descubrir la ruta del archivo y agregueextension=intl.so
a ese php.ini también. - Para verificar si Intl está instalado, puede hacerlo
$ php -m
para verificar los módulos disponibles.
php
symfony
composer-php
Mark Fox
fuente
fuente
Respuestas:
actualice su extensión php-intl , ¡de ahí proviene el error de icu!
compruebe que la extensión esté habilitada y configurada correctamente en php.ini también.
(pista: php-cli a veces usa un php.ini diferente)
php.ini
verifique su
phpinfo()
ANDphp -m
desde su terminal si la extensión se ha habilitado con éxito.Verifique sus versiones intl actuales de php con:
atención: ya no es necesario ( Symfony 2.3 ya ha sido lanzado )
agregue la bandera de estabilidad mínima @dev o @rc a su dependencia de esta manera, por favor:
La estabilidad predeterminada en Composer es estable, lo que la rama de Symfony 2.3 no es actualmente (es @rc). Lea más sobre indicadores de estabilidad aquí .
fuente
INTL::…
falla. Pero, puedo ver a través de phpinfo () en el navegador que Intl está instalado y que la versión de ICU es 49.x. Sin embargo, Composer aún falla con el mismo mensaje de error.php -m
NO veo intl. Sé que funciona en el servidor web, pero no se reconoce en la línea de comandos. Entonces ... ¿tengo que agregarlo a la línea de comandos?php -m
todavía no reconozco desde CLI?Muchas aplicaciones solo admitirán la configuración regional "en" y no necesitarán capacidades de traducción o php-intl. Si este es usted, o no puede instalar php-intl en su servidor, puede agregar explícitamente symfony / icu ~ 1.0 a su archivo
composer.json
. 1.0 no requiere php-intl, mientras que 1.1+ sí.Si no necesita funciones de traducción:
Sin esta declaración y tratando de instalar symfony / symfony 2.3 Composer puede intentar instalar symfony / icu ~ 1.2, lo que requeriría que instale php-intl.
Esto se trata explícitamente de forma más extensa en la documentación del componente Symfony Intl bajo "ICU y problemas de implementación".
fuente
"require":{"symfony/symfony": "v2.3.3"}}
resultado: ´Cargando repositorios de composer con información del paquete Instalando dependencias (incluido require-dev) - Instalando psr / log (1.0.0) Descargando: 100% - Instalando twig / twig (v1.13.2) Descargando: 100% - Instalando doctrine / common (2.3.0) Descargando: 100% - Instalando symfony / symfony (v2.3.3) Descargando: 100% - Instalando symfony / icu (v1.0.0) Descargando: 100% Escribiendo archivo de bloqueo Generando archivos de carga automáticacomposer.lock
se comparte entre entornos con diferentes versiones (o ausencia) de Intl.Puede encontrar una solución con respecto a este o problemas similares aquí: ICU y problemas de implementación
El comportamiento del compositor debe ser inteligente seleccionando el componente icu correcto:
No debería haber (teóricamente) ningún error al instalar Symfony 2.3. sin extensión internacional.
Pero puede quedar atrapado cuando su entorno de desarrollo difiere de su servidor de producción como se menciona en este artículo:
Cuando no tenga 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 me haya ayudado, ya que me ayudó para este caso especial con diferentes entornos.
fuente
Mac OS Mavericks viene con PHP 5.4.17 sin intl. Para obtener esto, deberá seguir esos pasos:
fuente
Sé que esta respuesta puede no ser la respuesta correcta al problema de esta persona, pero fue la solución a mi problema con el mismo título. Pude solucionar este problema por mí mismo habilitando la extensión intl en php.ini y actualizando el compositor.
Actualización de compositor.
Elimine el comentario de esta línea (en php.ini):
Y también elimine el comentario de estas dos líneas debajo de [intl] en (php.ini):
Y reinicie apache2 por supuesto. :)
Información Adicional:
Si usa mac e instaló php con Homebrew, siga estos pasos:
(PHP 5.4)
(PHP 5.5)
Reinicie apache.
fuente
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 ICU en el servidor: 1 2
Luego, arregle el componente Icu en su archivo composer.json a una versión coincidente:
Establezca la versión en "1.0 " si el servidor no tiene instalada la extensión intl; "1.1. " Si el servidor está compilado con ICU 4.2 o inferior.
Finalmente, corre
en su máquina de desarrollo, realice pruebas exhaustivas y vuelva a implementar. La instalación de las dependencias ahora se realizará correctamente.
fuente