Problems with lib-icu dependency when installing Symfony 2.3.x via Composer Problems with lib-icu dependency when installing Symfony 2.3.x via Composer symfony symfony

Problems with lib-icu dependency when installing Symfony 2.3.x via Composer


update your php-intl extension, that's where the icu error comes from!

sudo aptitude install php5-intl                 // i.e. ubuntubrew install icu4c                              // osx

check the extension is enabled and properly configured in php.ini aswell.

( hint: php-cli sometimes uses a different php.ini )

php.ini

extension=intl.so       ; *nixextension=php_intl.dll  ; windows[intl]intl.default_locale = en_utf8intl.error_level = E_WARNING

check your phpinfo() AND php -m from your terminal if the extension has been succesfully enabled.

Check your current intl versions from php with:

Intl::getIcuVersion();Intl::getIcuDataVersion();

attention: not needed anymore ( symfony 2.3 has meanwhile been released )

add the minimum stability flag @dev or @rc to your dependency like this please:

composer create-project symfony/framework-standard-edition mynewerproject/ 2.3.*@dev 

The default stability in composer is stable which symfony 2.3 branch is not currently ( it's @rc ). Read more an stability flags here.


Many applications will only be supporting "en" locale and will have no need for translation capabilities or php-intl. If this is you, or you can't install php-intl on your server, you can explicitly add symfony/icu ~1.0 to your composer.json. 1.0 does not require php-intl, whereas 1.1+ does.

If you don't need translation features:

$ php bin/composer.phar require symfony/icu ~1.0

Without this declaration and trying to install symfony/symfony 2.3 Composer may try to install symfony/icu ~1.2 which would require you to install php-intl.

This is explicitly covered more extensively in the Symfony Intl Component's docs under "ICU and Deployment Problems".


A solution regarding this or similar problems can be found here: ICU and Deployment Problems

The behavior of composer should be intelligent selecting the right icu-component:

  • symfony/icu 1.0.*: when the intl extension is not available
  • symfony/icu 1.1.*: when intl is compiled with ICU 4.0 or higher
  • symfony/icu 1.2.*: when intl is compiled with ICU 4.4 or higher

There should be (theoretically) no error installing symfony 2.3. with no intl-extension.

But you can be trapped when your development-environment differs from your production-server like mentioned in this article:

  • the development machines are compiled with ICU 4.4 or higher, but the server is compiled >with a lower ICU version than 4.4
  • the intl extension is available on the development machines but not on the server.

When you have no root-access to your production-server you can fix it as mentioned in this article. (tweaking composer.json)

Hope this additional information helped as it helped me for this special case with different environments.