Skip to content

Установка intl с ICU 55.1 на не дефолную версию php на VPS

Установка intl с ICU 55.1 на не дефолную версию php на VPS

Качаем ICU 58.2(последнюю версию, с которой корректно собирается php intl на Centos 6.x в настоящий момент, 59.1 не собирается из-за ошибок вида

/opt/icu5c/include/unicode/umachine.h:347:13: error: 'char16_t' does not name a type)`

wget https://github.com/unicode-org/icu/releases/download/release-58-2/icu4c-58_2-src.tgz
tar zxvf icu4c-58_2-src.tgz

cd icu/source ./configure --prefix=/opt/icu5c && make && make install

wget https://pecl.php.net/get/intl-3.0.0.tgz
tar -xvzf intl-3.0.0.tgz
cd intl-3.0.0 /opt/php56/bin/phpize
./configure --with-php-config=/opt/php56/bin/php-config --with-icu-dir=/opt/icu5c
make
make install 
ls -la /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/
echo "extension=intl.so" > /opt/php56/etc/php.d/intl.ini
/opt/php56/bin/php -m | grep intl 
intl 
``` bash
/opt/php56/bin/php -i | grep
ICU

Для php 7.x делаем по другому. Скачиваем архив с исходниками php той же версии, что и версия для которой собирается модуль

wget http://md1.php.net/distributions/php-7.1.7.tar.xz
распаковываем
tar -xvf php-7.1.7.tar.xz заходим в распакованный каталог
cd php-7.1.7
заходим в каталог нужного нам расширения
cd ext/intl
собираем его
/opt/php71/bin/phpize 
./configure --with-php-config=/opt/php71/bin/php-config --with-icu-dir=/opt/icu5c
make 
make install 
ls -la /opt/php71/lib/php/extensions/no-debug-non-zts-20131226/
echo "extension=intl.so" > /opt/php71/etc/php.d/intl.ini
/opt/php71/bin/php -m | grep intl
intl 
 /opt/php71/bin/php -i | grep
 ```
 ``` bash
ICU

Если в процессе сборки при make выдаются ошибки для ICU версии > =59.1, делаем так

make CXXFLAGS="-g -std=c++11"
вместо простого
make
Дополнительная информация https://nix-tips.ru/obnovlenie-icu-na-centosred-hatfedora.html https://ru.stackoverflow.com/questions/524666/%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-icu-%D0%BD%D0%B0-php7