0

我正在尝试安装一些 symfony 包来创建本教程中的管理工具:http ://www.ens.ro/2012/07/13/symfony2-jobeet-day-12-the-admin-bundle/

我正在使用 symfony 2.3.* 并且正在使用 composer 作为我的依赖项,如下所述:无法使用 composer 设置奏鸣曲

但是当我尝试按照上述作曲家文件(php composer.phar update)中的描述更新我的 symfony buid 时,我收到此错误:

  • sonata-project/intl-bundle dev-master 的安装请求 -> 可由 sonata-project/intl-bundle[dev-master] 满足。
    • sonata-project/intl-bundle dev-master 需要 ext-intl * -> 您的系统中缺少请求的 PHP 扩展 intl。

现在我知道安装了 php intl 扩展,因为它显示在我的 info.php 文件中(如图所示):http: //johnpaulwhatnow.com/intl.png

那么为什么 composer/symfony 认为没有安装 intl 扩展?

规格:Mamp| php 5.4.10| symfony 2.3.6

编辑:我确实在我的 php 错误日志中发现了这个错误:

[2013 年 10 月 24 日 14:05:11 America/Chicago] PHP 警告:PHP 启动:无法加载动态库 '/Applications/MAMP/bin/php/php5.4.10/lib/php/extensions/no-debug- non-zts-20100525/intl.so' - dlopen(/Applications/MAMP/bin/php/php5.4.10/lib/php/extensions/no-debug-non-zts-20100525/intl.so, 9): 符号未找到:_zend_new_interned_string 引用自:/Applications/MAMP/bin/php/php5.4.10/lib/php/extensions/no-debug-non-zts-20100525/intl.so 预期在:/Applications/MAMP/ 中的平面命名空间bin/php/php5.4.10/lib/php/extensions/no-debug-non-zts-20100525/intl.so 在 Unknown on line 0

解决了

我不得不告诉我的 CLI 使用安装了 intl.so 的 mamp 的 php。我通过创建别名来做到这一点: alias phpmamp='/Applications/MAMP/bin/php/php5.4.19/bin/php'

然后运行我需要的命令: phpmamp composer.phar update --prefer-dist

谢谢您的回答!

4

2 回答 2

1

因为您可能有两个 php.ini... 一个用于 cli 和 apache。

您必须在两者中加载国际扩展名。

编辑

要查找从 cli 运行 php 脚本时使用的 php.ini,请在终端中使用以下命令:

php -r 'phpinfo();' | grep 'php.ini'
于 2013-10-24T22:22:31.930 回答
0

Composer 是一个命令行工具,它使用 PHP CLI 版本,这通常有一个不同的 php.ini,而不是在 web 服务器中运行的 PHP。

php -i在命令行上运行并检查是否intl提到了扩展名。我想不是。此外,使用该扩展程序修复您的错误也是一个好主意。这可能是相关的 - CLI 版本可能触发了错误。

于 2013-10-24T22:29:59.573 回答