【发布时间】:2013-05-21 03:00:43
【问题描述】:
我使用 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 extension
如此简单,安装和配置 intl 扩展。自 PHP 5.3 起,默认分发 Intl 扩展,但某些分发,如 MAMP,没有 Intl,因此您需要获取它。我用梨:
我的步骤:
- 安装 Intl 扩展(由 PECL 维护):
$ pear install pecl/intl— 您可能需要先将 pecl 通道添加到 pear。 -
如果您使用 MAMP 并且从未使用过 pear/pecl 检查lullabot's helpful blog post; MAMP 不附带 php 源,因此您必须 download the source for your php version 并将源移动到
/Applications/MAMP/bin/php/php[version]/include/php(如博文中所述) - PEAR 找不到我的 php.ini,所以我不得不手动将
extension=intl.so添加到 php.ini。在 MAMP 中,您可以通过转到文件 > 编辑模板 > php.[version].ini 轻松编辑 php.ini
命令行:
- 当使用 Composer 或 Symfony 的控制台 CLI 时,您还需要 Intl,并且由于
phpCLI 通常使用不同的php.ini,您还需要在其中添加扩展指令。要查找 CLI 的 php.ini,只需执行$ php -i |grep php\.ini以发现文件路径并将extension=intl.so添加到该 php.ini 中。 - 要检查是否安装了 Intl,您可以通过
$ php -m检查可用模块。
【问题讨论】:
-
您使用的是哪个操作系统?那么我可以提供有关如何更新您的国际扩展名的信息。
-
不要使用 pecl/intl,因为它是为了与 PHP 5.2.x 兼容。从 PHP 5.3 开始,Intl 是一个核心扩展。
-
@JérômeVieilledent 似乎当前的 MAMP 发行版没有捆绑 Intl,这只让您可以选择使用 PECL 来构建它php.net/manual/en/intl.installation.php
标签: php symfony composer-php