Composer安装Symfony 2.3.x时lib-icu依赖性问题?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我错过了提供lib-icuphp intl扩展

如此简单,请安装并配置intl扩展。从PHP 5.3开始,默认情况下,Intl扩展是分布式的,但是像MAMP这样的一些分布没有Intl,因此您需要获取它。我用

我的步骤:

  • 安装Intl扩展(由PECL维护):$ pear install pecl/intl- 您可能必须先将pecl通道添加到梨。
  • 如果你使用MAMP MAMP不附带php源代码,因此你必须下载PHP版本的源代码并将源代码移入/Applications/MAMP/bin/php/php[version]/include/php(如在博客文章中所述)
  • PEAR找不到我的php.ini,所以我不得不手动添加extension=intl.so到php.ini中。在MAMP中,您可以轻松编辑php.ini,方法是转到文件>编辑模板> php。[version] .ini

命令行:

  • 当使用Composer或Symfony的控制台CLI时,您还需要Intl,因为phpCLI通常使用不同的命令,所以您也需要php.ini在其中添加扩展指令。要找到CLI的php.ini,只需$ php -i |grep php\.ini发现文件路径并添加extension=intl.so到该php.ini。
  • 要检查是否安装了Intl,您可以$ php -m检查可用的模块。
提问于
用户回答回答于

更新你的php-intl扩展,这就是icu错误来自哪里!

sudo aptitude install php5-intl                 // i.e. 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()AND php -m

使用以下命令从php检查当前的intl版本:

Intl::getIcuVersion();
Intl::getIcuDataVersion();
用户回答回答于

许多应用程序只支持“en”语言环境,并且不需要翻译功能或php-intl。如果这是你,或者你不能在服务器上安装PHP-国际机场,你可以明确地添加的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组件的文档 “ICU和部署问题”下面有更详细的介绍。

扫码关注云+社区