Installing/enabling PHP Pecl Intl extension on CentOs 5

Original question:

I'm having trouble installing the PHP Pecl Intl extension on my CentOs 5 machine.

After installing both icu and libicu with the following commands:

$ yum install icu
$ yum install libicu

I tried to install the Intl extension like so:

$ /usr/bin/pecl install intl

I selected to search for the default location for the ICU libraries and header files. It ends up crashing like this:

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

update

After successfully installing the development version of icu as suggested by RusAlex (thanks RusAlex) like so:

$ yum install libicu-devel

I ran into a new problem which I also encountered locally the following command:

$ /usr/bin/pecl install intl

now produces this error:

 /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

It appears to have something to do with PHP 5.3 being bundled with Intl already. But how can I enable this extension, if I look in my PHP Info than I cannot find any reference to it...


Solution 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

And you are good to go. And better enter the extension=intl.so manually to php.ini or even more elegant create a new .ini file in the /etc/php.d/ directory.

Solution 2:

You are correct, you can't install the PECL package because as of PHP 5.3 Intl is part of PHP.

If you installed PHP using YUM, you can just pull down the intl package:

> yum list php*intl
> yum install <file_from_above>

Solution 3:

This worked for me on CentOS 5.6:

yum install gcc gcc-cpp gcc-c++

After that all errors to do with intl disappeared

Solution 4:

all you need is

yum install libicu-devel