一个php平台安装问我国际扩展,但它似乎已经安装

Posted

技术标签:

【中文标题】一个php平台安装问我国际扩展,但它似乎已经安装【英文标题】:A php platform install ask me intl extension, but it seems already installed 【发布时间】:2014-11-01 15:30:08 【问题描述】:

在 orocrm 安装期间(使用 symfony 2 开发的平台)我收到此错误

Fatal error: Uncaught exception 'Symfony\Component\Intl\Exception\MethodArgumentValueNotImplementedException' with message 'The   Symfony\Component\Intl\Collator\Collator::__construct() method's argument $locale value 'fr_FR' behavior   is not implemented. Only the locale "en" is supported.  Please install the "intl" extension for full    localization capabilities.' in /Users/ale/Sites/educacloud-  bo/vendor/symfony/symfony/src/Symfony/Component/Intl/Collator/Collator.php:80
Stack trace:
#0 /Users/ale/Sites/educacloud-bo/app/SymfonyRequirements.php(619):   Symfony\Component\Intl\Collator\Collator->__construct('fr_FR')
#1 /Users/ale/Sites/educacloud-bo/app/OroRequirements.php(24): SymfonyRequirements->__construct()
#2 /Users/ale/Sites/educacloud-bo/app/oro-check.php(6): OroRequirements->__construct()
#3 main
thrown in /Users/ale/Sites/educacloud-bo/vendor/symfony/symfony/src/Symfony/Component/Intl/Collator/Collator.php on line 80

但我已经安装了国际扩展:

# php -i | grep intl
 /usr/local/php5/php.d/50-extension-intl.ini,
 intl 
 intl.default_locale => it_IT => it_IT
 intl.error_level => 0 => 0

和我浏览器上的 php_info() 给我这些结果:

version 1.1.0
ICU version 4.6
ICU Data version    4.6

有什么问题? 谢谢 亚历山德拉

【问题讨论】:

安装的是什么版本的symfony/icu Symfony 版本 2.3.19。我不想更改语言环境,我想取消翻译一些捆绑包。 我问的不是 symfony 版本,而是 icu 版本。您可以在composer.lock 文件中找到它。 我也有同样的问题。这发生在我的生产环境(ubuntu 14)而不是开发环境(debian)中。在生产中php5-intl 触发了libicu52 的依赖安装,这里可能存在一些向后兼容性问题 【参考方案1】:

你需要重新安装包 int1

apt-get install php-intl

service apache2 restart

【讨论】:

【参考方案2】:

做一件可能有助于解决此错误的事情 打开 php.ini 文件 删除;extension=php_intl.dll的评论

extension=php_intl.dll

并重新启动 Apache 服务器

【讨论】:

【参考方案3】:

默认情况下,symfony2 可以管理 "en" 扩展,但要获得其他语言,您必须安装 php-intl 扩展。

最简单的选择是与作曲家一起安装,因为它为你暴露了全局变量......等等

所有这些都在这里解释symfony/components/intl。

对于作曲家扩展安装,它是symfony/components/using_components。

所以在读完这个之后,你需要执行:

composer require symfony/intl

-- 编辑

好的,对不起,我刚刚测试了解决方案,事实是:如果您使用 symfony 组件,您只能访问“en”。我和你有同样的问题,我的 php5-intl 扩展已安装并激活,但错误仍然存​​在。对我来说,我继续在文件顶部写 use Symfony\Component\Intl\DateFormatter\IntlDateFormatter;,而不是使用基本的 php5 扩展名。

【讨论】:

【参考方案4】:

检查解决方案:

在 Symfony 2.0 中:

app/config/config.yml

框架: 会话: default_locale:it_IT

在 Symfony 2.1+ 中:

app/config/config.yml

框架: default_locale: it_IT

【讨论】:

Symfony 标准版的安装已经设置了这个参数。我对已经设置的参数有同样的问题

以上是关于一个php平台安装问我国际扩展,但它似乎已经安装的主要内容,如果未能解决你的问题,请参考以下文章

安装国际 PHP 扩展 OSX High Sierra

编译安装 PHP 扩展

国际扩展:安装 php_intl.dll

您的 PHP 似乎没有安装运行 WordPress 所必需的 MySQL 扩展”处理方法

使用 php/windows 安装 ImageMagick 扩展

在 Mac 上的 XAMPP 上安装 PHP 国际化扩展 (Intl)