如何使作曲家识别intl php扩展

时间:2013-10-24 18:56:25

标签: php symfony composer-php intl

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

我正在使用symfony 2.3。*并使用composer作为我的依赖项,如下所述:Cannot setup sonata using 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错误日志中找到了这个错误:

  

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

解决

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

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

谢谢你的回答!

2 个答案:

答案 0 :(得分:1)

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

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

修改

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

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

答案 1 :(得分:0)

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

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