Je n'ai eu aucun problème pour installer Symfony 2.2.x en utilisant Composer, j'ai toujours copié la version stable à http://symfony.com/download .
composer create-project symfony/framework-standard-edition myproject/ 2.2.1
(J'ai installé Composer dans le monde entier)
Curieux de savoir 2.3.0-RC1, j'ai pensé que cela se passerait bien:
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.0-RC1
Mais j'ai été arrêté par les erreurs suivantes:
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].
Dois-je modifier le fichier composer.json?
Mise à jour de la solution
Il me manquait l' extension php intl qui fournit lib-icu
Tellement facile, installez et configurez l'extension intl. Depuis PHP 5.3, l'extension Intl est distribuée par défaut, mais certaines distributions, comme MAMP, n'ont pas Intl, vous devrez donc l'acquérir. J'ai utilisé PEAR :
Mes pas:
- Installez l'extension Intl (maintenue par PECL):
$ pear install pecl/intl
- vous devrez peut-être ajouter le canal pecl à pear en premier. - Si vous utilisez MAMP et n'avez jamais travaillé avec pear / pecl, consultez le blog utile de Lullabot ; MAMP n'est pas livré avec la source php, vous devez donc télécharger la source de votre version php et déplacer la source dans
/Applications/MAMP/bin/php/php[version]/include/php
(comme indiqué dans l'article du blog) - PEAR n'a pas pu trouver mon php.ini, j'ai donc dû l'ajouter manuellement
extension=intl.so
à php.ini. Dans MAMP, vous pouvez facilement modifier php.ini en allant dans Fichier> Modifier le modèle> php. [Version] .ini
Ligne de commande:
- Lorsque vous utilisez Composer ou la console CLI de Symfony, vous aurez également besoin d'Intl et comme la
php
CLI utilise généralement un autre,php.ini
vous voudrez également y ajouter la directive d'extension. Pour trouver le php.ini de votre CLI, il vous suffit$ php -i |grep php\.ini
de découvrir le chemin du fichier et d'ajouter égalementextension=intl.so
à ce php.ini. - Pour vérifier si Intl est installé, vous pouvez
$ php -m
vérifier les modules disponibles.
php
symfony
composer-php
Mark Fox
la source
la source
Réponses:
mettez à jour votre extension php-intl , c'est de là que vient l'erreur icu!
vérifiez que l'extension est activée et correctement configurée dans php.ini également.
(indice: php-cli utilise parfois un autre php.ini)
php.ini
vérifiez votre
phpinfo()
ETphp -m
depuis votre terminal si l'extension a été activée avec succès.Vérifiez vos versions intl actuelles de php avec:
attention: plus nécessaire ( symfony 2.3 est entre-temps sorti )
ajoutez l'indicateur de stabilité minimum @dev ou @rc à votre dépendance comme ceci s'il vous plaît:
La stabilité par défaut dans composer est stable, ce que la branche symfony 2.3 n'est pas actuellement (c'est @rc). En savoir plus sur les drapeaux de stabilité ici .
la source
INTL::…
échoue. Mais, je peux voir via phpinfo () dans le navigateur qu'Intl est installé et que la version ICU est 49.x. Cependant, Composer échoue toujours avec le même message d'erreur.php -m
je ne vois PAS intl. Je sais que cela fonctionne sur le serveur Web, mais ce n'est pas reconnu sur la ligne de commande. Alors… je dois l'ajouter à la ligne de commande?php -m
ne reconnaît toujours pas de CLI?De nombreuses applications ne prendront en charge que la locale "en" et n'auront pas besoin de capacités de traduction ou de php-intl. Si c'est vous, ou si vous ne pouvez pas installer php-intl sur votre serveur, vous pouvez ajouter explicitement symfony / icu ~ 1.0 à votre
composer.json
. 1.0 ne nécessite pas php-intl, contrairement à 1.1+.Si vous n'avez pas besoin de fonctionnalités de traduction:
Sans cette déclaration et en essayant d'installer symfony / symfony 2.3 Composer peut essayer d'installer symfony / icu ~ 1.2, ce qui vous obligerait à installer php-intl.
Ceci est explicitement couvert plus en détail dans la documentation du composant Symfony Intl sous «ICU and Deployment Problems».
la source
"require":{"symfony/symfony": "v2.3.3"}}
résultat: ´Chargement des référentiels de compositeur avec les informations sur les paquets Installation des dépendances (y compris require-dev) - Installation de psr / log (1.0.0) Téléchargement: 100% - Installation de twig / twig (v1.13.2) Téléchargement: 100% - Installation de doctrine / common (2.3.0) Téléchargement: 100% - Installation de symfony / symfony (v2.3.3) Téléchargement: 100% - Installation de symfony / icu (v1.0.0) Téléchargement: 100% Écriture du fichier de verrouillage Génération de fichiers de chargement automatiquecomposer.lock
est partagé entre des environnements avec différentes versions (ou absence) d'Intl.Une solution à ce problème ou à des problèmes similaires peut être trouvée ici: ICU et problèmes de déploiement
Le comportement du compositeur doit être intelligent en sélectionnant le bon composant icu:
Il ne devrait y avoir (théoriquement) aucune erreur lors de l'installation de symfony 2.3. sans extension intl.
Mais vous pouvez être piégé lorsque votre environnement de développement diffère de votre serveur de production comme mentionné dans cet article:
Lorsque vous n'avez pas d'accès root à votre serveur de production, vous pouvez le réparer comme mentionné dans cet article. (peaufiner composer.json)
J'espère que ces informations supplémentaires m'ont aidé car elles m'ont aidé pour ce cas particulier avec différents environnements.
la source
Mac OS Mavericks est livré avec PHP 5.4.17 sans intl. Pour l'obtenir, vous devrez suivre ces étapes:
la source
Je sais que cette réponse n'est peut-être pas la bonne réponse au problème de cette personne, mais c'était la solution à mon problème avec le même titre. J'ai pu résoudre ce problème moi-même en activant l'extension intl dans php.ini et en mettant à jour le compositeur.
Mise à niveau du compositeur.
Supprimer le commentaire de cette ligne (dans php.ini):
Et supprimez également le commentaire de ces deux lignes ci-dessous [intl] dans (php.ini):
Et redémarrez apache2 bien sûr. :)
Information additionnelle:
Si vous utilisez mac et installé php avec Homebrew, procédez comme suit:
(PHP 5.4)
(PHP 5.5)
Redémarrez apache.
la source
Une meilleure solution consiste à fixer votre composer.json à la version requise par le serveur de production. Tout d'abord, déterminez la version ICU sur le serveur: 1 2
Ensuite, corrigez le composant Icu de votre fichier composer.json sur une version correspondante:
Définissez la version sur "1.0 " si le serveur n'a pas l'extension intl installée; "1.1. " Si le serveur est compilé avec ICU 4.2 ou une version antérieure.
Enfin, exécutez
sur votre machine de développement, testez de manière approfondie et déployez à nouveau. L'installation des dépendances va maintenant réussir.
la source