Интересные статьи
Домены
Главная страница / Linux / CentOS / Как обновить библиотеку ICU и PHP intl в CentOS 7/Ubuntu/Debian

Как обновить библиотеку 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 из исходников на Ubuntu 18.04

В этой статья я расскажу вам как установить Python 3 из исходников в Ubuntu 18.04, …

Как удалить все записи о вложениях за определенный период

Как удалить все записи о вложениях за определенный период DELETE FROM wp_postmeta WHERE post_id IN …

Установка VNC на CentOS 7

Установка VNC на CentOS 7 VNC часто бывает необходим при установке новой ОС на сервер …

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

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