原始问题:
我在 CentOs 5 机器上安装 PHP Pecl Intl 扩展时遇到了问题。
安装两者后icu
,libicu
使用以下命令:
$ yum install icu
$ yum install libicu
我尝试像这样安装 Intl 扩展:
$ /usr/bin/pecl install intl
我选择搜索 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
更新
按照提示成功安装 icu 开发版本后罗斯亚历克斯(感谢 RusAlex)就像这样:
$ yum install libicu-devel
我遇到了一个新问题,我在本地也遇到了以下命令:
$ /usr/bin/pecl install intl
现在产生这个错误:
/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
这似乎与 PHP 5.3 已与 Intl 捆绑有关。但我该如何启用此扩展,如果我查看我的 PHP 信息,却找不到任何关于它的引用...
答案1
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
现在一切就绪了。最好手动将 extension=intl.so 输入到 php.ini 中,或者更优雅的做法是在 /etc/php.d/ 目录中创建一个新的 .ini 文件。
答案2
你是对的,你不能安装 PECL 包,因为从 PHP 5.3 开始,Intl 是 PHP 的一部分。
如果您使用 YUM 安装了 PHP,那么您可以直接拉下 intl 包:
> yum list php*intl
> yum install <file_from_above>
答案3
这在 CentOS 5.6 上对我有用:
yum install gcc gcc-cpp gcc-c++
之后所有与之相关的错误都intl
消失了
答案4
/usr/bin/pecl install intl
搜索日志
checking for icu-config... /usr/bin/icu-config*
。
您将需要一个稍后包含的目录的路径/bin/icu-config
。下载php:
wget http://us2.php.net/get/php-5.3.6.tar.gz/from/jp.php.net/mirror
tar xvzf php-5.3.6.tar.gz
cd php-5.3.6/ext/intl/
编译并安装 intl 模块。phpize
./configure --enable-intl --with-icu-dir=/usr
make
make test
sudo make install
最后,附加
extension=intl.so
到php.ini
。