Обновление базы часовых поясов на Linux. Статьи. wb0.ru - Все для веб-мастера, on-line сервисы

Обновление базы часовых поясов на Linux

Иногда схема переходов на летнее/зимнее время меняется. База данных поставляется в виде пакета tzdata.noarch. Если на сервере установлена актуальная версия ОС, можно обновить этот пакет средствами установленного пакетного менеджера:

CentOS:

yum update tzdata
service httpd restart

Debian:

apt-get upgrade tzdata
/etc/init.d/apache2 restart

Если на сервере устаревшая версия ОС, обновить базу данных часовых поясов можно вручную.

Скачаем последнюю версию tzdata с сайта IANA http://www.iana.org/time-zones:

mkdir -p /usr/local/src/tzdata
cd /usr/local/src/tzdata
wget http://www.iana.org/time-zones/repository/releases/tzcode2011i.tar.gz

Распакуем его:

tar xzf tzcode2011i.tar.gz
rm tzcode2011i.tar.gz

И обновим базу данных, например, европы:

zic europe

Остается сделать симлинк файла нужного пояса в /etc/localtime:

cp -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

И перезапустить все зависимые сервисы или сервер целиком:

Сервисы: for SERVICE in `chkconfig -list | grep 3:on | awk {'print $1'}`; do service $SERVICE restart; done
Сервер: shutdown -r -t 0 now

Обновление часового пояса для PHP

У PHP своя, встроенная база часовых поясов, которую тоже нужно обновить.

Если в системе есть PECL, то делаем так:

pecl install timezonedb

Установленный в системе PECL - скорее исключение, чем правило. Если PECL отсутствует:

  1. Выясняем, куда установлен PHP:

    find / -type f -name php 2>/dev/null
    /usr/local/zend/bin/php

    В нашем случае PHP был установлен в префикс /usr/local/zend/ (это была хостинговая среда на базе чужих конфигов, но с похожей структурой, так будет даже нагляднее).

  2. Получаем пакет timezonedb с сайта PECL http://pecl.php.net/package/timezonedb:

    cd /usr/local/src
    wget http://pecl.php.net/get/timezonedb-2011.14.tgz
    tar xzf timezonedb-2011.14.tgz
    cd timezonedb-2011.14

  3. Генерируем конфигурационный скрипт и собираем модуль:

    /usr/local/zend/bin/phpize
    ./configure -with-php-config=/usr/local/zend/bin/php-config
    make
    make install

    Команда make install автоматически скопирует его в каталог с расширениями php.

  4. Прописываем модуль в конфигурационный файл PHP:

    echo 'extension = timezonedb.so' > /usr/local/zend/etc/php.ini

  5. Перезапускаем PHP-зависимые сервисы, в нашем случае они управляются одним init-скриптом:

    /etc/init.d/zend-server restart

Для проверки можно посмотреть в графу "Olson" Timezone Database Version в phpinfo:

/usr/local/zend/bin/php -i | grep Olson

"Olson" Timezone Database Version ? 2011.14

Номер версии должен совпасть с номером версии установленного нами пакета timezonedb:

ll /usr/local/src/timezone*tgz

-rw-r-r- 1 root root 193528 Nov 2 15:00 /usr/local/src/timezonedb-2011.14.tgz

Дата публикации: 22.11.2011
wifix.ru

Статьи по теме:

   Ваш псевдоним:
Ваш комментарий:

Календарь событий


Новости Интернет


Поиск





Последний пересчет

тИЦ:07 Окт 15
PR:09 Дек 13

Наши партнеры

wservices.ru - регистрация доменов, Whois-сервисы Смайлы на все случаи жизни


 
Copyright © 2006-2024, wb0.ru