Иногда на сервере указано неверное время или дата. Оно может отставать от реального на несколько минут или даже несколько часов. А это влияет на многие функции, которые завязаны на времени.
Для исправления заходим на свой сервер через ssh.
Консольная программа для проверки времени и даты на сервере Linux:
Будет указано что-то вроде:
Установка текущей даты:
Установка текущего времени:
В кавычках устанавливаем верное значение даты и времени.
Затем снова проверяем время, с помощью команды date и убеждаемся, что теперь оно настроено правильно.
Если время снова возвращается к исходному (не точному)
Иногда, после перезагрузки сервера (или через какое-то время) параметры старого времени снова возвращается. Тогда следует поменять данные по-другому.
В CentOS заходим в директорию etc и находим файл localtime. Это символическая ссылка (symbolic link) на файл в котором указана временная зона. Возможно сервер работает с другой временной заной и поэтому возвращается к исходному значению.
Удаляем эту символическую ссылку
Вместо неё устанавливаем ссылку на другую временную зону. В данном случае, Москву:
Дата и время в PHP
Бывает, что несмотря на правильные настройки, дата которая выводится в скриптах PHP не соответствует серверному. За дату в PHP отвечает файл php.ini.
И настройках по умолчанию дата и время указана в UTC:
По идее смена строчки на такую:
в php скриптах исправит ситуацию. Однако такое происходит тоже не всегда, потому что файл php.ini дублируется в разных местах и из какого именно файла берутся настройки понятно не всегда.
Проверяем какая таймзона указана в настройках сервера.
Показывает UTC:
Показывает таймзону:
Также можно узнать, какое время показывает php без указания таймзоны:
Для исправления проблем с различием времени (отстаёт от реального или спешит), в начале PHP скрипта устанавливаем нужную временную зону. Для Москвы это: