Домены
Интересные статьи
Домены

Как обновить библиотеку ICU и PHP intl в CentOS 7/Ubuntu/Debian

Недавно столкнулся с такой проблемой: после переноса проекта с сервера (Debian) на другой сервер (CentOS) начало отставать время на час. Все возможные проверки часовых поясов (в системе, PHP,SQL) не дали результатов, там время стояло корректно, а вот функции внутри PHP отдавали текущее время на час меньше, чем должно быть.

Поэтому, если у вас отстает время на час назад и не можете с этим ничего сделать или не знаете как обновить библиотеку ICU и модуль PHP intl, использующий ее — прошу в полную новость, где я расскажу как обновить библиотеку ICU и PHP intl в CentOS 7/Ubuntu/Debian

Как оказалось — проблема эта давно известна (с момента отмены в России перехода на летнее время) и давно уже исправлена в актуальных версиях библиотеки, но не все операционные системы предлагают ее для обновления, а модули PHP (в частности intl, которое отвечает за интернационализацию) вообще используют старую версию, на которой модуль был собран.

В результате долгих поисков был найден скрипт (Автор: Anton Minin (aminin)), скрипт позволяет просмотреть список версий ICU, а также собрать из исходников и установить в систему как саму ICU, так и расширение PHP intl. Я немного адаптировал данный скрипт для поддержки сборки на других ОС (изначально скрипт был для Debian/Ubuntu, но теперь собирается и на CentOS 7).  Загрузить его можно здесь

При использовании оригинального скрипта вам нужно:

  1. Загрузить скрипт себе (любым из способов)
  2. Выполнить команду bash  icu_install.sh versions (где заменить icu_install.sh на имя, под которым вы сохранили скрипт). В результате вам будет показан актуальный список версий ICU
  3. Выполнить команду bash icu_install.sh install <номер версии>, например bash icu_install.sh install 60.2
  4. Система предложит удалить модуль php-intl, если он установлен и повторить установку.
  5. Остается только дождаться установки.

К сожалению оригинальный скрипт мне не подходил т.к. по тем путям, которые лежат файлы PHP в Debian/Ubuntu в CentOS 7 ничего нет, поэтому скрипт был немного модифицирован и необходимые данные вынесены в переменные.

Так при использовании моей модификации скрипта вам нужно:

  1. Загрузить скрипт себе (любым из способов)
  2. Указать значения переменных в начале скрипта
  3. Выполнить пункты 2,3,4,5 из списка выше

Единственное, что не изменено в моей версии скрипта — автоустановка конфигурации для загрузки т.к. тут каталоги разнятся в зависимости от системы и желаний администратора. Поэтому после сборки на CentOS7 нужно вручную скопировать файл 20-intl.ini с содержимым extension=intl.so  в директорию php.d (для CentOS7 и PHP из Remi это /etc/opt/<версия PHP>/php.d

Для CentOS 7 и установленного PHP 7.0 корректно установилась 60.2, версии выше не захотели ставиться, для PHP 7.1 — спокойно установилась последняя версия.

Спасибо автору оригинального скрипта, очень помогло.

Обо мне cyber01

Прочитайте также

Как установить Python 3.6 в CentOS 6

В CentOS 6 по умолчанию используется Python 2, но бывает даже для такой старой системы …

Как установить RabbitMQ в CentOS 7

RabbitMQ это широко используемый брокер сообщений с открытым исходным кодом, написан на языке программирования Erlang. …

Как сделать дамп только нужных записей из базы данных

Бывало такое, что из всей таблицы нужно сделать дамп только определенных строк? Например, результата какого-либо …

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

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