Je n'ai eu aucun problème à installer Symfony 2.2.x à l'aide de Composer, j'ai toujours simplement copié la version stable à l'adresse http://symfony.com/download .
composer create-project symfony/framework-standard-edition myproject/ 2.2.1
(Composer est installé globalement)
Curieux à propos de 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 s'est 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?
Si facile, installez et configurez l'extension intl. À partir de 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:
$ pear install pecl/intl
- vous devrez peut-être ajouter le canal pecl à Pear en premier./Applications/MAMP/bin/php/php[version]/include/php
(comme indiqué dans l'article du blog)extension=intl.so
vers php.ini. Dans MAMP, vous pouvez facilement modifier php.ini en allant dans Fichier> Modifier un modèle> php. [Version] .iniLigne de commande:
php
CLI utilise généralement un php.ini
vous voudrez aussi y ajouter la directive d’extension. Pour trouver le php.ini de votre CLI, faites simplement $ php -i |grep php\.ini
pour découvrir le chemin du fichier et ajouter extension=intl.so
à ce php.ini aussi.$ php -m
pour vérifier les modules disponibles.mettez à jour votre extension php-intl , c'est de là que vient l'erreur icu!
Sudo aptitude install php5-intl // i.e. ubuntu
brew install icu4c // osx
vérifiez que l'extension est activée et correctement configurée dans php.ini aswell.
(indice: php-cli utilise parfois un php.ini différent)
php.ini
extension=intl.so ; *nix
extension=php_intl.dll ; windows
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING
vérifiez votre phpinfo()
AND php -m
à partir de votre terminal si l'extension a été activée avec succès.
Vérifiez vos versions intl actuelles de php avec:
Intl::getIcuVersion();
Intl::getIcuDataVersion();
attention: plus besoin maintenant ( symfony 2.3 est entre-temps sorti)
ajoutez le drapeau de stabilité minimum @dev ou @rc à votre dépendance de la manière suivante:
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.*@dev
La stabilité par défaut de composer est stable, mais la branche de symfony 2.3 n'est pas actuellement (c'est @rc). Lisez plus d'un indicateur de stabilité ici .
De nombreuses applications ne prendront en charge que les paramètres régionaux "en" et n'auront pas besoin de capacités de traduction ni de php-intl. Si tel est votre profil ou que vous ne pouvez pas installer php-intl sur votre serveur, vous pouvez explicitement ajouter symfony/ic ~ 1.0 à votre composer.json
. 1.0 ne nécessite pas php-intl, alors que 1.1+ en a besoin.
Si vous n'avez pas besoin de fonctionnalités de traduction:
$ php bin/composer.phar require symfony/icu ~1.0
Sans cette déclaration et d'essayer 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 de manière plus détaillée dans le documentation de Symfony Intl Component sous "Problèmes liés à l'ICU et au déploiement".
Une solution concernant ce problème ou des problèmes similaires peut être trouvée ici: Problèmes liés à l'ICU et au déploiement
Le comportement de composer devrait être intelligent en sélectionnant le bon composant icu:
- symfony/icu 1.0. *: lorsque l'extension intl n'est pas disponible
- symfony/icu 1.1. *: quand intl est compilé avec ICU 4.0 ou supérieur
- symfony/icu 1.2. *: quand intl est compilé avec ICU 4.4 ou supérieur
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 indiqué dans cet article:
- les machines de développement sont compilées avec ICU 4.4 ou supérieur, mais le serveur est compilé> avec une version inférieure ICU version supérieure à 4.4)
- l'extension intl est disponible sur les machines de développement mais pas sur le serveur.
Lorsque vous n'avez pas d'accès root à votre serveur de production, vous pouvez le réparer comme indiqué dans cet article. (tweaking composer.json)
J'espère que ces informations supplémentaires ont été utiles, car cela m'a aidé pour ce cas spécial dans différents environnements.
Mac OS Mavericks est livré avec PHP 5.4.17 sans intl. Pour l'obtenir, vous devrez suivre ces étapes:
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.
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 pour moi-même en activant l'extension intl dans php.ini et en mettant à niveau le compositeur.
Mise à niveau du compositeur.
php composer.phar self-update
Supprimer le commentaire de cette ligne (dans php.ini):
extension=php_intl.dll
Et aussi supprimez les commentaires de ces deux lignes ci-dessous [intl] dans (php.ini):
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING
Et redémarrez Apache2 bien sûr. :)
Informations complémentaires:
Si vous utilisez mac et que vous avez installé php avec Homebrew, suivez ces étapes:
(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
Redémarrez Apache.
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
$ php -i | grep ICU
ICU version => 4.2.1
Ensuite, corrigez le composant Icu de votre fichier composer.json sur une version correspondante:
"require: {
"symfony/icu": "1.1.*"
}
Définissez la version sur "1.0 ." si l'extension intl n'est pas installée sur le serveur; "1.1." si le serveur est compilé avec ICU 4.2 ou une version inférieure.
Enfin, lancez
php composer.phar update symfony/icu
sur votre machine de développement, effectuez des tests approfondis et déployez-vous à nouveau. L'installation des dépendances va maintenant réussir.