在 CentOs 5 上安装/启用 PHP Pecl Intl 扩展

Mar*_*eld 9 php installation centos pecl

原问题:

我在 CentOs 5 机器上安装 PHP Pecl Intl 扩展时遇到问题。

安装后iculibicu使用以下命令:

$ yum install icu
$ yum install libicu
Run Code Online (Sandbox Code Playgroud)

我尝试像这样安装 Intl 扩展:

$ /usr/bin/pecl install intl
Run Code Online (Sandbox Code Playgroud)

我选择搜索 ICU 库和头文件的默认位置。它最终会像这样崩溃:

checking whether to enable internationalization support... yes, shared
checking for icu-config... no
checking for location of ICU headers and libraries... not found
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
ERROR: `/tmp/pear/temp/intl/configure --with-icu-dir=DEFAULT' failed
Run Code Online (Sandbox Code Playgroud)

更新

按照RusAlex 的建议成功安装 icu 的开发版本后(感谢 RusAlex),如下所示:

$ yum install libicu-devel
Run Code Online (Sandbox Code Playgroud)

我遇到了一个新问题,我也在本地遇到了以下命令:

$ /usr/bin/pecl install intl
Run Code Online (Sandbox Code Playgroud)

现在产生这个错误:

 /private/tmp/pear/temp/intl/collator/collator_class.c:92: error: duplicate 'static'
 /private/tmp/pear/temp/intl/collator/collator_class.c:96: error: duplicate 'static'
 /private/tmp/pear/temp/intl/collator/collator_class.c:101: error: duplicate 'static'
 /private/tmp/pear/temp/intl/collator/collator_class.c:107: error: duplicate 'static'
 make: *** [collator/collator_class.lo] Error 1
 ERROR: `make' failed
Run Code Online (Sandbox Code Playgroud)

它似乎与已经与 Intl 捆绑在一起的 PHP 5.3 有关。但是,如果我查看我的 PHP 信息而不是找不到任何对它的引用,我该如何启用此扩展程序...

小智 11

sudo yum install libicu
sudo yum install libicu-devel.x86_64
sudo /usr/bin/pecl install intl
sudo echo 'extension=intl.so' >> /etc/php.ini
Run Code Online (Sandbox Code Playgroud)

你很高兴去。最好在 php.ini 中手动输入 extension=intl.so 或者更优雅地在 /etc/php.d/ 目录中创建一个新的 .ini 文件。


小智 8

你是对的,你不能安装 PECL 包,因为PHP 5.3 Intl 是 PHP 的一部分

如果你使用 YUM 安装 PHP,你可以直接拉下 intl 包:

> yum list php*intl
> yum install <file_from_above>
Run Code Online (Sandbox Code Playgroud)


小智 1

看来你需要安装icu-devicu-devel打包或类似的东西。

您需要开发包。