Обновление ICU на CentOS/Red Hat/Fedora

yii2 formatter icu

Столкнулся с проблемой, при выводе времени, yii\i18n\Formatter формирует для зоны 'Europe/Moscow' время, соответствующее GMT+4:

выводил :

В конфиге приложения временная зона указана явно: 'timeZone' => 'Asia/Omsk'.

Выяснилось, что все дело в устаревшей, двухлетней давности библиотеке ICU версии 52.1. Версия PHP актуальная, на данный момент: 5.6.13.

Узнать установленные версии PHP и ICU можно при помощи простого скрипта:

За отсутствием в репозиториях свежей версии ICU, знающей обо всех последних манипуляциях с часовыми поясами и летним/зимним временем, пришлось собрать из исходников ICU 55.1 и установить свежее pecl расширение intl.

Плацдарм: Fedora 21 x64 Server.

Подготовка

Первым делом удалим php-intl и установим нужные инструменты

Скачиваем и распаковываем исходники ICU

Сборка и установка

Собираем и устанавливаем ICU в указанный путь

Устанавливаем расширение intl

На запрос Specify where ICU libraries and headers can be found [DEFAULT] :, укажем путь к новому ICU: /opt/icu5c.

После успешного завершения установки, обращаем внимание на рекомендацию подключения нового расширения:

You should add "extension=intl.so" to php.ini

Добавляем строку extension=intl.so  в файл /etc/php.ini  и перезапускаем веб-сервер: systemctl restart httpd.

Проверяем результат

Проверяем установленные версии PHP и ICU

Проверяем формирование даты компонентом yii2 formatter

В итоге мы получили свежую версию библиотеки ICU и адекватную работу крутого php-фреймворка Yii 2.0.

Обновление ICU на CentOS/Red Hat/Fedora: 2 комментария

    1. Примерно так же и будет. Нет убунты под рукой для проверки.
      cd source &&
      ./configure --prefix=/usr &&
      make &&
      make install

      или что-то не собирается?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *