hostprofi.ru
Подобрать хостинг
Термин·буква Ч

Часовой пояс сервера

краткое определение

Часовой пояс сервера (server timezone) — настройка времени, используемая серверными процессами: PHP date(), MySQL NOW(), записи в логах и расписание crontab. Несоответствие часового пояса сервера и приложения приводит к ошибкам в расписаниях, логах и отображении дат.

Часовой пояс сервера — системная настройка Linux, определяющая, какое локальное время используется операционной системой и приложениями при работе с датами и временем. Неверный или несогласованный часовой пояс — распространённая причина ошибок в логах, расписаниях crontab, записях в базе данных и отображении дат в приложениях.

Как настроить часовой пояс

На уровне операционной системы (Linux):

# Просмотр текущего часового пояса
timedatectl

# Установить московское время (UTC+3)
timedatectl set-timezone Europe/Moscow

# Или через симлинк (старый метод)
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

# Проверить
date

Часовой пояс PHP настраивается в php.ini или в коде:

# php.ini
date.timezone = Europe/Moscow

# В PHP-скрипте
date_default_timezone_set('Europe/Moscow');

MySQL имеет собственный часовой пояс, независимый от системного:

-- Просмотр
SELECT @@global.time_zone, @@session.time_zone;

-- Установить в my.cnf
[mysqld]
default-time-zone = '+03:00'

-- В сессии
SET time_zone = 'Europe/Moscow';

UTC как стандарт

Профессиональный подход — хранить все временны́е метки в БД в UTC, конвертировать в локальное время на уровне приложения при отображении. Это исключает проблемы с переходом на летнее время (DST) и позволяет обслуживать пользователей из разных часовых поясов без изменения данных.

Россия отменила переход на летнее время в 2014 году, зафиксировав UTC+3 (Москва). До 2014 года серверы на Moscow/UTC+4 (летом) создавали путаницу в логах при переходе. На серверах с UTC+3 эта проблема устранена.

История

Часовые пояса введены в 1884 году на Международной меридианной конференции в Вашингтоне. В Linux время хранится как Unix timestamp (секунды с 1 января 1970 года 00:00:00 UTC). База данных часовых поясов IANA (Olson database) — стандарт идентификаторов (America/New_York, Europe/Moscow). Россия унифицировала часовые пояса несколько раз: в 2010 году сократила их с 11 до 9 и отменила летнее время; в 2014 году перевела стрелки постоянно на UTC+3 для Москвы.

На что обращать внимание

Наиболее частые проблемы: задачи в crontab выполняются не в то время (сервер в UTC, ожидается Moscow); временны́е метки в MySQL и PHP отличаются (разные часовые пояса); логи Nginx и Apache в разных поясах при изменении конфига. После смены часового пояса перезапустите PHP-FPM, MySQL и nginx: они кэшируют системное время при старте. В хостинг-панелях (cPanel, ISPmanager) часовой пояс настраивается через интерфейс — изменения применяются без перезапуска сервисов вручную.

Часовой пояс и cron

Часовой пояс критичен для cron-задач: если сервер в UTC, а задача должна выполняться в 3:00 по Москве (UTC+3), нужно указать 0:00 UTC. Изменение часового пояса: timedatectl set-timezone Europe/Moscow. Проверка: date или timedatectl. nginx: логи пишутся в системном часовом поясе — это важно при анализе access.log. PHP: date.timezone = Europe/Moscow в php.ini — иначе функции date() возвращают UTC. Apache: переменная TZ для часового пояса. ISPmanager и cPanel отображают часовой пояс в настройках сервера. VPS в Москве: часовой пояс Europe/Moscow (UTC+3, без летнего времени с 2014 года).

Другие термины