如何使作曲家识别国际PHP扩展


How to make composer recognize intl php extension

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

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

但是当我尝试按照上面的作曲家文件(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 扩展已安装,因为它显示在我的信息.php文件中(如图所示):http://johnpaulwhatnow.com/intl.png

那么为什么作曲家/Symfony认为没有安装INTL扩展呢?

规格:曼普|PHP 5.4.10|symfony 2.3.6

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

[2013 年 10 月 24 日 14:05:11 美国/芝加哥] 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 在 未知 在第 0 行

解决

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

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

谢谢你的回答!

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

您必须在两者中加载 intl 扩展。

编辑

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

php -r 'phpinfo();' | grep 'php.ini'

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

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