Intereting Posts
Как получить данные POST из API передачи файлов PhoneGaps Как вычитать с помощью SQL в MYSQL между двумя значениями даты и получить результат в минутах или секунде? Настройка продуктов на странице магазина, чтобы перейти прямо в Партнерский сайт facebook logout только делает выход из веб-сайта не из Facebook? База данных показа PHP / MYSQL PHP перенаправляет все шаблоны в определенный файл php? Чтобы перенаправить пользователя обратно в index.php после обработчика Автоматически создавать json-файл, в котором перечислены все изображения в каталоге? CAKEPHP – изменить путь по умолчанию к webroot PHP: Хорошее решение для функции маршрутизации MVC для анализа запрашиваемых представлений? PHP – Защита сайта от папок с 777 правами доступа Imagick не загружен в PHP URL-адрес codeignign Неопределенная переменная внутри почты :: отправить в Laravel 5 Когда вы будете использовать это ключевое слово $ в PHP?

Проблемы с зависимостью lib-icu при установке Symfony 2.3.x через Composer

У меня не было проблем с установкой 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, поэтому вам нужно его приобрести. Я использовал PEAR :

Мои шаги:

  • Установите расширение Intl (поддерживается PECL): $ pear install pecl/intl – вам, возможно, придется добавить канал pecl для груши в первую очередь.
  • Если вы используете MAMP и никогда не работали с полезной записью блога lullabot с pear / pecl; MAMP не поставляется с источником php, поэтому вам нужно загрузить исходный код для вашей версии php и перенести источник в /Applications/MAMP/bin/php/php[version]/include/php (как описано в сообщении блога )
  • PEAR не смог найти мой php.ini, поэтому мне пришлось вручную добавить extension=intl.so в php.ini. В MAMP вы можете легко редактировать php.ini, выбрав File> Edit Template> php. [Version] .ini

Командная строка:

  • При использовании Composer или CLI для Symfony Console вам также понадобится Intl, и поскольку php CLI обычно использует другой php.ini вы также захотите добавить директиву расширения. Чтобы найти php.ini вашего CLI, просто сделайте $ php -i |grep php\.ini чтобы открыть путь к файлу и добавить extension=intl.so в этот php.ini.
  • Чтобы проверить, установлен ли Intl, вы можете сделать $ 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 

на вашей машине разработки, широко протестируйте и разверните снова. Теперь установка зависимостей будет успешной.