我正在将symfony2应用程序部署到未启用php intl扩展的服务器上。这件事我没有发言权。
这个问题的答案暗示了一个解决方案:可能禁用Symfony的intl要求吗?
我已经把"symfony/intl": "3.0。*@dev"在我的作曲家。Json和所有更新都很好。我还需要做些什么来激活/启用它吗?在AppKernel中使用bundle ?
现在,当我在部署服务器上运行check.php时,我得到以下错误: PHP Fatal error: Uncaught exception 'ReflectionException' with message 'Extension intl does not exist' in /web/folk/eirik/030476/releases/20150528181203/app/SymfonyRequirements.php:658
Stack trace:
#0 /web/folk/eirik/030476/releases/20150528181203/app/SymfonyRequirements.php(658): ReflectionExtension->__construct('intl')
#1 /web/folk/eirik/030476/releases/20150528181203/app/check.php(6): SymfonyRequirements->__construct()
#2 {main}
thrown in /web/folk/eirik/030476/releases/20150528181203/app/SymfonyRequirements.php on line 658
我查看SymfonyRequirements.php中的第658行,发现:
if (class_exists('Locale')) {
if (defined('INTL_ICU_VERSION')) {
$version = INTL_ICU_VERSION;
} else {
$reflector = new ReflectionExtension('intl');
ob_start();
$reflector->info();
$output = strip_tags(ob_get_clean());
preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
$version = $matches[1];
}
$this->addRecommendation(
version_compare($version, '4.0', '>='),
'intl ICU version should be at least 4+',
'Upgrade your <strong>intl</strong> extension with a newer ICU version (4+).'
);
}
我对这些东西了解不多,但我认为new ReflectionExtension('intl')要求在php中启用intl扩展,这对我来说是没有选择的。
但是什么是INTL_ICU_VERSION?为什么它没有定义?为什么symfony/intl组件不能为我解决这个问题?
,顺便说一句
if (class_exists('Collator')) {
$this->addRecommendation(
null !== new Collator('FR_fr'),
'intl extension should be correctly configured',
'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
);
}
我也改变了'FR_fr'到'en'在这里,这是一个错误给出的check.php,当我做出改变消失了。
如果你看看你正在运行的check.php
文件,你会发现它不加载Composer自动加载器,因此它没有区别,无论你是否安装了Symfony Intl组件,它会一直失败,因为它正在寻找一个不存在的所需扩展。你链接的SO问题确实提到了问题得到解决,但没有说支票通过了。
如果这个扩展是你的Symfony安装的问题,你需要的唯一区域设置是"en",那么在你安装了Symfony Intl drop之后,问题应该已经消失了。如果您想检查其他问题,您可以注释掉这些行,这样脚本就可以完成了。不用担心脚本与框架完全解耦,你甚至可以在完成后删除它。
如果您正在使用Capistrano进行部署,并且您在每次部署中都运行这些检查,您可能也想禁用它,或者根据您的需要自定义该脚本