如何让作曲家识别国际 php 扩展

Posted

技术标签:

【中文标题】如何让作曲家识别国际 php 扩展【英文标题】:How to make composer recognize intl php extension 【发布时间】:2013-11-03 15:38:39 【问题描述】:

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

我正在使用 symfony 2.3.* 并且正在使用 composer 作为我的依赖项,如下所述:Cannot setup sonata using 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 扩展没有安装?

规格: 地图| php 5.4.10| symfony 2.3.6

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

[24-Oct-2013 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 在第 0 行的未知中

已解决

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

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

感谢您的回答!

【问题讨论】:

看起来与这个问题非常相似:***.com/questions/18463300/… 【参考方案1】:

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

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

编辑

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

哦,我明白了——我应该猜到了,因为我需要在任何 symfony 命令前使用“php -c /Applications/MAMP/conf/php5.4.10/”...但是我在哪里找到 cli php 的 php.ini? 还 - 我使用 unix 别名将 php 指向我的 mamp 中的 php:别名 phpmamp='/Applications/MAMP/bin/php/php5.4.19/bin/php'...wouldn如果我明确告诉命令行使用特定的 php 库,则不会安装 intl 扩展?

以上是关于如何让作曲家识别国际 php 扩展的主要内容,如果未能解决你的问题,请参考以下文章

如何识别国家并相应地更改 URL

如何解决作曲家问题 - laravel/framework [..] 需要 ext-mcrypt * -> 您的系统中缺少请求的 PHP 扩展 mcrypt

模式识别国家重点实验室(中国科学院自动化研究所)的简要概况

js获取浏览器语言识别国家

PHPUnit类“Error”不扩展PHPUnit_Framework_TestCase

如何让 Visual Studio 2010 将文件扩展名识别为 C#/ASPX/C/C++ 文件?