У меня не было проблем с установкой 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?
Обновление решения
Мне не хватало расширения php intl, которое предоставляет lib-icu
Так просто, установите и настройте расширение intl. Начиная с PHP 5.3 расширение Intl распространяется по умолчанию, но некоторые дистрибутивы, такие как MAMP, не имеют Intl, поэтому вам необходимо его приобрести. Я использовал ГРУША :
Мои шаги:
- Установите расширение Intl (поддерживаемое PECL):
$ pear install pecl/intl
- вам может потребоваться сначала добавить канал pecl в pear. - Если вы используете MAMP и никогда не работали с pear / pecl, проверьте полезный пост в блоге lullabot ; MAMP не поставляется с исходным кодом php, поэтому вам необходимо загрузить исходный код для своей версии php и переместить источник в
/Applications/MAMP/bin/php/php[version]/include/php
(как описано в сообщении в блоге) - PEAR не смог найти мой php.ini, поэтому мне пришлось вручную добавить
extension=intl.so
в php.ini. В MAMP вы можете легко редактировать php.ini, выбрав «Файл»> «Редактировать шаблон»> «php. [Версия] .ini».
Командная строка:
- При использовании Composer или Symfony Console CLI вам также понадобится Intl, и, поскольку
php
CLI обычно использует другой,php.ini
вы захотите добавить туда директиву расширения. Чтобы найти свой интерфейс командной строки php.ini, просто найдите$ php -i |grep php\.ini
путь к файлу и добавьтеextension=intl.so
к нему php.ini. - Чтобы проверить, установлен ли Intl, вы можете
$ php -m
проверить доступные модули.
php
symfony
composer-php
Марк Фокс
источник
источник
Ответы:
обновите расширение php-intl , вот откуда возникает ошибка icu!
также убедитесь, что расширение включено и правильно настроено в php.ini.
(подсказка: php-cli иногда использует другой php.ini)
php.ini
проверьте свой
phpinfo()
AND наphp -m
вашем терминале, если расширение было успешно включено.Проверьте текущие версии intl с php с помощью:
внимание: больше не требуется ( тем временем была выпущена Symfony 2.3 )
добавьте флаг минимальной стабильности @dev или @rc к вашей зависимости, например, пожалуйста:
Стабильность по умолчанию в composer стабильна, какой ветки Symfony 2.3 в настоящее время нет (это @rc). Подробнее о флагах стабильности читайте здесь .
источник
INTL::…
не получается. Но я могу видеть через phpinfo () в браузере, что Intl установлен, а версия ICU - 49.x. Однако Composer по-прежнему не работает с тем же сообщением об ошибке.php -m
НЕ вижу intl. Я знаю, что он работает на веб-сервере, но не распознается в командной строке. Итак… я должен добавить это в командную строку?php -m
все равно не распознает из CLI?Многие приложения будут поддерживать только локаль "en" и не будут нуждаться в возможностях перевода или php-intl. Если это вы или вы не можете установить php-intl на свой сервер, вы можете явно добавить symfony / icu ~ 1.0 в свой
composer.json
. 1.0 не требует php-intl, тогда как 1.1+ требует.Если вам не нужны функции перевода:
Без этого объявления и попытки установить symfony / symfony 2.3 Composer может попытаться установить symfony / icu ~ 1.2, что потребует от вас установки php-intl.
Это подробно описано в документации компонента Symfony Intl в разделе «ICU и проблемы развертывания».
источник
"require":{"symfony/symfony": "v2.3.3"}}
результат: ´Загрузка репозиториев композитора с информацией о пакете Установка зависимостей (включая require-dev) - Установка psr / log (1.0.0) Скачивание: 100% - Установка twig / twig (v1.13.2) Скачивание: 100% - Установка doctrine / common (2.3.0) Скачивание: 100% - Установка symfony / symfony (v2.3.3) Скачивание: 100% - Установка symfony / icu (v1.0.0) Скачивание: 100% Запись файла блокировки Создание файлов автозагрузкиcomposer.lock
используется совместно между средами с разными версиями (или отсутствием) Intl.Решение этой или подобных проблем можно найти здесь: ICU и проблемы развертывания
При выборе правильного icu-компонента поведение композитора должно быть осмысленным:
Не должно быть (теоретически) ошибок при установке Symfony 2.3. без расширения intl.
Но вы можете попасть в ловушку, когда ваша среда разработки отличается от вашего производственного сервера, как указано в этой статье:
Если у вас нет root-доступа к вашему производственному серверу, вы можете исправить это, как указано в этой статье. (настройка composer.json)
Надеюсь, эта дополнительная информация помогла мне в этом особом случае с разными средами.
источник
Mac OS Mavericks поставляется с PHP 5.4.17 без intl. Чтобы получить это, вам нужно будет выполнить следующие действия:
источник
Я знаю, что этот ответ может быть неправильным ответом на проблему этого человека, но это было решение моей проблемы с тем же названием. Я смог решить эту проблему для себя, включив расширение intl в php.ini и обновив composer.
Повышение уровня композитора.
Удалите комментарий из этой строки (в php.ini):
А также удалите комментарий к этим двум строкам ниже [intl] в (php.ini):
И, конечно, перезапустите apache2. :)
Дополнительная информация:
Если вы используете Mac и установили php с Homebrew, выполните следующие действия:
(PHP 5.4)
(PHP 5.5)
Перезагрузите apache.
источник
Лучшее решение - исправить ваш composer.json до версии, необходимой производственному серверу. Сначала определите версию ICU на сервере: 1 2
Затем исправьте компонент Icu в файле composer.json до соответствующей версии:
Установите версию «1.0. », Если на сервере не установлено расширение intl; «1.1. », Если сервер скомпилирован с ICU 4.2 или ниже.
Наконец, запустите
на вашей машине разработки, тщательно протестируйте и разверните снова. Теперь установка зависимостей будет успешной.
источник