通过 Composer 安装 Symfony 2.3.x 时的 lib-icu 依赖项问题
我使用Composer安装Symfony 2.2.x没有问题,我总是在 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 文件吗?
解决方案更新
我错过了提供lib-icu的php intl扩展
如此简单,安装和配置 intl 扩展。从 PHP 5.3 开始,国际扩展模块是默认分发的,但某些发行版(如 MAMP)没有 Intl,因此您需要获取它。我用了梨:
我的步骤:
- 安装 Intl 扩展(由 PECL 维护): — 您可能需要先将 pecl 通道添加到 pear。
$ pear install pecl/intl
-
如果您使用MAMP并且从未使用过pear / pecl,请查看lullabot的有用博客文章;MAMP不随php源代码一起提供,因此您必须下载php版本的源代码并将源代码移入(如博客文章中所述)
/Applications/MAMP/bin/php/php[version]/include/php
- PEAR找不到我的php.ini,所以我不得不手动添加到php.ini。在MAMP中.ini您可以通过转到文件>编辑模板>php来轻松编辑php。[版本].ini
extension=intl.so
命令行:
- 当使用 Composer 或 Symfony 的 Console CLI 时,您还需要 Intl,并且由于 CLI 通常使用不同的 CLI,因此您还需要在此处添加扩展指令。要查找 CLI 的 php.ini只需发现文件路径并添加到该 php.ini即可。
php
php.ini
$ php -i |grep php\.ini
extension=intl.so
- 要检查是否安装了Intl,您可以检查可用的模块。
$ php -m