Корректировка времени и даты на сервере VPS CentOS (Linux)

Admin CentOS, Linux, PHP, VPS

Иногда на сервере указано неверное время или дата. Оно может отставать от реального на несколько минут или даже несколько часов. А это влияет на многие функции, которые завязаны на времени.

Для исправления заходим на свой сервер через ssh.

Консольная программа для проверки времени и даты на сервере Linux:

date

Будет указано что-то вроде:

Wed Oct 24 22:26:19 MSK 2030

Установка текущей даты:

date +%Y%m%d -s "20170801"

Установка текущего времени:

date +%T -s "01:28:00"

В кавычках устанавливаем верное значение даты и времени.

Затем снова проверяем время, с помощью команды date и убеждаемся, что теперь оно настроено правильно.

Если время снова возвращается к исходному (не точному)

Иногда, после перезагрузки сервера (или через какое-то время) параметры старого времени снова возвращается. Тогда следует поменять данные по-другому.

В CentOS заходим в директорию etc и находим файл localtime. Это символическая ссылка (symbolic link) на файл в котором указана временная зона. Возможно сервер работает с другой временной заной и поэтому возвращается к исходному значению.

Удаляем эту символическую ссылку

sudo rm localtime

Вместо неё устанавливаем ссылку на другую временную зону. В данном случае, Москву:

sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Дата и время в PHP

Бывает, что несмотря на правильные настройки, дата которая выводится в скриптах PHP не соответствует серверному. За дату в PHP отвечает файл php.ini.

И настройках по умолчанию дата и время указана в UTC:

date.timezone = UTC

По идее смена строчки на такую:

date.timezone = "Europe/Moscow"

в php скриптах исправит ситуацию. Однако такое происходит тоже не всегда, потому что файл php.ini дублируется в разных местах и из какого именно файла берутся настройки понятно не всегда.

Проверяем какая таймзона указана в настройках сервера.

Показывает UTC:

echo date_default_timezone_get();

Показывает таймзону:

echo ini_get('date.timezone');

Также можно узнать, какое время показывает php без указания таймзоны:

echo date("d.m.Y H:i:s T", time());.

Для исправления проблем с различием времени (отстаёт от реального или спешит), в начале PHP скрипта устанавливаем нужную временную зону. Для Москвы это:

date_default_timezone_set( 'Europe/Moscow' );
Метки:

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Корректировка времени и даты на сервере VPS CentOS (Linux)"