У меня не было проблем с установкой Symfony 2.2.x с помощью Composer, я всегда просто копировал стабильную версию на http://symfony.com/download .
composer create-project symfony/framework-standard-edition myproject/ 2.2.1
(У меня есть Composer установлен глобально)
Любопытный о 2.3.0-RC1 Я решил, что это пройдет гладко:
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.0-RC1
Но было отключено следующими ошибками:
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].
Нужно ли мне настроить файл composer.json?
Так просто, установите и настройте расширение intl. Начиная с PHP 5.3 расширение Intl распространяется по умолчанию, но в некоторых дистрибутивах, таких как MAMP, нет Intl, поэтому вам нужно его приобрести. Я использовал PEAR :
Мои шаги:
$ pear install pecl/intl
– вам, возможно, придется добавить канал pecl для груши в первую очередь. /Applications/MAMP/bin/php/php[version]/include/php
(как описано в сообщении блога ) extension=intl.so
в php.ini. В MAMP вы можете легко редактировать php.ini, выбрав File> Edit Template> php. [Version] .ini Командная строка:
php
CLI обычно использует другой php.ini
вы также захотите добавить директиву расширения. Чтобы найти php.ini вашего CLI, просто сделайте $ php -i |grep php\.ini
чтобы открыть путь к файлу и добавить extension=intl.so
в этот php.ini. $ php -m
для проверки доступных модулей. обновите расширение php-intl , вот откуда исходит ошибка icu!
sudo aptitude install php5-intl // ie ubuntu brew install icu4c // osx
проверьте, что расширение включено и правильно настроено в php.ini.
(подсказка: php-cli иногда использует другой php.ini)
php.ini
extension=intl.so ; *nix extension=php_intl.dll ; windows [intl] intl.default_locale = en_utf8 intl.error_level = E_WARNING
проверьте ваш phpinfo()
и php -m
из вашего терминала, если расширение было успешно включено.
Проверьте текущие версии intp с php с помощью:
Intl::getIcuVersion(); Intl::getIcuDataVersion();
внимание: больше не требуется ( Symfony 2.3 тем временем был выпущен )
добавьте минимальный флаг устойчивости @dev или @rc к своей зависимости, как это, пожалуйста:
composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.*@dev
Стабильность по умолчанию в компоновщике стабильна, и в настоящее время не существует ветки symfony 2.3 (это @rc). Подробнее здесь указаны флаги стабильности.
Многие приложения будут поддерживать только «en» locale и не будут нуждаться в возможностях перевода или php-intl. Если это вы, или вы не можете установить php-intl на свой сервер, вы можете явно добавить symfony / icu ~ 1.0 в ваш composer.json
. 1.0 не требует php-intl, тогда как 1.1+.
Если вам не нужны функции перевода:
$ php bin/composer.phar require symfony/icu ~1.0
Без этого объявления и попытки установить symfony / symfony 2.3 Composer может попытаться установить symfony / icu ~ 1.2, для чего вам потребуется установить php-intl.
Это более подробно рассматривается в документах Symfony Intl Component в разделе «Проблемы ICU и проблемы развертывания».
Решение по этим или аналогичным проблемам можно найти здесь: ICU и проблемы развертывания
Поведение композитора должно быть разумным, выбрав правильный icu-компонент:
- symfony / icu 1.0. *: если расширение intl не доступно
- symfony / icu 1.1. *: когда intl скомпилирован с ICU 4.0 или выше
- symfony / icu 1.2. *: когда intl скомпилирован с ICU 4.4 или выше
Должно быть (теоретически) отсутствие ошибок при установке symfony 2.3. без расширения intl.
Но вы можете оказаться в ловушке, когда ваша среда разработки отличается от вашего производственного сервера, как указано в этой статье:
- машины разработки скомпилированы с ICU 4.4 или выше, но сервер скомпилирован> с более низкой версией ICU, чем 4.4
- внутреннее расширение доступно на машинах разработки, но не на сервере.
Если у вас нет корневого доступа к вашему производственному серверу, вы можете исправить его, как указано в этой статье. (настройка композитора.json)
Надеюсь, эта дополнительная информация помогла мне, поскольку это помогло мне в этом специальном случае с разными средами.
Mac OS Mavericks поставляется с PHP 5.4.17 без Intl. Чтобы получить это, вам нужно будет выполнить следующие действия:
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.
Я знаю, что этот ответ может быть неправильным ответом на проблему этого человека, но это было решение моей проблемы с тем же названием. Я смог решить эту проблему самостоятельно, включив расширение intl в php.ini и обновив композитор.
Модернизация композитора.
php composer.phar self-update
Удалить комментарий из этой строки (в php.ini):
extension=php_intl.dll
А также удалите комментарий этих двух строк ниже [intl] in (php.ini):
[intl] intl.default_locale = en_utf8 intl.error_level = E_WARNING
И, конечно же, перезапустите apache2. 🙂
Дополнительная информация:
Если вы используете mac и установленный php с Homebrew, выполните следующие действия:
(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
Перезапустите apache.
Лучшее решение – исправить ваш composer.json до версии, требуемой производственным сервером. Сначала определите версию ICU на сервере: 1 2
$ php -i | grep ICU ICU version => 4.2.1
Затем исправьте компонент Icu в файле composer.json в соответствующей версии:
"require: { "symfony/icu": "1.1.*" }
Установите версию на «1.0. », Если на сервере нет встроенного расширения; «1.1. », Если сервер скомпилирован с ICU 4.2 или ниже.
Наконец, запустите
php composer.phar update symfony/icu
на вашей машине разработки, широко протестируйте и разверните снова. Теперь установка зависимостей будет успешной.