Des problèmes avec les lib-soins intensifs de dépendances lors de l'installation de Symfony 2.3.x par Compositeur
Je n'ai eu aucun problèmes pour l'installation de Symfony 2.2.x à l'aide de Compositeur, j'ai toujours juste copié la version stable de http://symfony.com/download.
composer create-project symfony/framework-standard-edition myproject/ 2.2.1
(J'ai Compositeur installé à l'échelle mondiale)
Curieux de savoir 2.3.0-RC1 j'ai pensé que ce serait aller en douceur:
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.0-RC1
Mais a obtenu d'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 besoin d'ajuster le compositeur.fichier json?
Solution De Mise À Jour
J'ai été absent de la extension php intl qui fournit lib-soins intensifs
Si facile, d'installer et de configurer l'extension intl. Depuis PHP 5.3 l'extension Intl est distribué par défaut, mais certaines distributions, comme MAMP, n'ont pas Intl de sorte que vous aurez besoin de l'acquérir. J'ai utilisé POIRE:
Mon étapes:
- Installer l'extension Intl (maintenu par PECL):
$ pear install pecl/intl
— vous peut-être ajouter le pecl canal de poire premier. - Si vous utilisez MAMP et n'ont jamais travaillé avec de la poire/pecl vérifier lullabot est utile post de blog; MAMP n'a pas été livré avec les sources de php, de sorte que vous avez à télécharger de la source de votre version de php et le déplacement de la source dans
/Applications/MAMP/bin/php/php[version]/include/php
(comme expliqué dans le billet de blog) - POIRE ne pouvais pas trouver mon php.ini, j'ai donc dû ajouter manuellement
extension=intl.so
de php.ini. Dans MAMP vous pouvez modifier php.ini par Fichier > Modifier le Template > php.[version].ini
Ligne De Commande:
- Lors de l'utilisation de Compositeur ou de Symfony Console CLI vous aurez également besoin Intl et depuis le
php
CLI utilise généralement un autrephp.ini
vous aurez envie d'ajouter l'extension de la directive il y a trop. Pour trouver votre CLI de php.ini tout simplement$ php -i |grep php\.ini
à découvrir le chemin du fichier et ajouterextension=intl.so
pour que php.ini ainsi. - Pour vérifier si Intl est installé, vous pouvez le faire
$ php -m
de vérifier la liste des modules disponibles.
- quel système d'exploitation utilisez-vous? ensuite, je peux fournir des informations sur la façon de mettre à jour votre extension intl.
- N'utilisez pas de pecl/intl pour PHP 5.2.x compatibilité. Depuis PHP 5.3, Intl est une extension du coeur.
- il semble que le courant MAMP distribution ne contient pas de bundle Intl qui ne laisse que la possibilité d'utiliser PECL pour construire php.net/manual/en/intl.installation.php
Vous devez vous connecter pour publier un commentaire.
mise à jour de votre php-intl extension, c'est là où l'unité de soins intensifs vient l'erreur!
vérifier l'extension est activé et correctement configuré en php.ini aswell.
( indice: php-cli parfois utilise un autre php.ini )
php.ini
vérifier votre
phpinfo()
ETphp -m
à partir de votre terminal si l'extension a été activé avec succès.Vérifier votre actuelle intl versions de php avec:
attention: n'a plus besoin de ( symfony 2.3 a quant à lui été libéré )
ajouter le minimum de stabilité drapeau @dev ou @rc-en à votre dépendance comme cela s'il vous plaît:
Le défaut de stabilité dans compositeur est stable qui symfony 2.3 branche n'est pas actuellement ( c'est @rc ). Lire plus d'une stabilité des drapeaux ici.
INTL::…
échoue. Mais, je peux le voir via la fonction phpinfo() dans le navigateur qui Intl est installé et l'unité de soins intensifs version de 49.x. Cependant, Compositeur échoue toujours avec le même message d'erreur.php -m
je ne vois PAS intl. Je sais que ça fonctionne sur le serveur, mais il n'est pas reconnu sur la Ligne de Commande. Alors... j'ai pour l'ajouter à la Ligne de Commande?php -m
ne reconnaît toujours pas à partir de la CLI?php5-intl
a fait le tour pour moi thx !Intl
est une symfony classe, si vous n'êtes pas à l'aide de symfony utiliser la constante PHPINTL_ICU_VERSION
, ou une version plus complète de recherche est à la source pourIntl::getIcuVersion()
ce github branche de fusionDe nombreuses applications ne seront appui "fr" locale et n'ont pas besoin de capacités de traduction ou php-intl. Si c'est vous, ou 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 de php-intl, alors que 1.1+ ne.Si vous n'avez pas besoin des fonctionnalités de traduction:
Sans cette déclaration et d'essayer d'installer symfony/symfony 2.3 Compositeur peut essayer d'installer symfony/icu ~1.2 ce qui vous obligerait à installer php-intl.
C'est explicitement traités de manière plus approfondie dans le Symfony Intl du Composant docs en vertu de "soins intensifs et des Problèmes de Déploiement".
"require":{"symfony/symfony": "v2.3.3"}}
résultat: Chargement compositeur dépôts avec un paquet d'informations sur l'Installation des dépendances (y compris exiger-dev) - Installation de psr/log (1.0.0) Téléchargement: 100% - l'Installation de twig/twig (v1.13.2) Téléchargement: 100% - l'Installation de doctrine/commune (2.3.0) Téléchargement: 100% - l'Installation de symfony/symfony (v2.3.3) Télécharger: 100% - l'Installation de symfony/icu (v1.0.0) Téléchargement: 100% Écriture de fichier de verrouillage de la Génération de chargement automatique de fichierscomposer.lock
est partagé entre les environnements avec différentes versions (ou l'absence) d'Intl.Une solution concernant ce sujet ou des problèmes similaires peuvent être trouvés ici: Service des soins intensifs et des Problèmes de Déploiement
Le comportement de compositeur doit être intelligent, en sélectionnant le droit à une usi composant:
Il devrait être (théoriquement) pas d'erreur lors de l'installation de symfony 2.3. sans intl-extension.
Mais vous pouvez être coincé lors de votre développement-environnement diffère de votre production-serveur comme mentionné dans cet article:
Lorsque vous n'avez pas d'accès root à votre production-serveur, vous pouvez le fixer comme mentionné dans cet article. (tweaking compositeur.json)
Espère que cette information supplémentaire utile car il m'a aidé pour ce cas spécial, avec des environnements différents.
Mac OS Mavericks est livré avec PHP 5.4.17 sans intl. Pour l'obtenir, vous devez suivre ces étapes :
Je sais que cette réponse ne peut pas être la bonne réponse à ce problème de la personne, mais c'était la solution à mon problème, avec le même titre. J'ai été en mesure de résoudre le problème pour moi-même en activant l'extension intl en php.ini et la mise à niveau de compositeur.
La mise à niveau de compositeur.
Supprimer un commentaire de cette ligne (en php.ini):
Et également supprimer le commentaire de ces deux lignes ci-dessous [intl] dans (php.ini):
Et redémarrer apache2 bien sûr. 🙂
Informations Supplémentaires:
Si votre aide mac et installé php avec Homebrew suivez ces étapes:
(PHP 5.4)
(PHP 5.5)
Redémarrer apache.
Une meilleure solution est de corriger votre compositeur.json pour la version requise par le serveur de production. Tout d'abord, déterminer l'unité de soins intensifs de la version sur le serveur:
1
2
Puis fixer l'unité de soins intensifs composant dans votre compositeur.fichier json pour une version correspondante:
Définir la version de
"1.0." si le serveur ne dispose pas de l'extension intl installé;
"1.1." si le serveur est compilé avec ICU 4.2 ou plus bas.
Enfin, exécutez
sur votre machine de développement, de test et largement se déployer à nouveau. L'installation des dépendances réussir maintenant.