Вопрос или проблема
На странице “Общие настройки” моего сайта на WordPress неправильно отображаются UTC и местное время (см. скриншот ниже).
Отображаемые UTC и местное время неверны. Должно быть указано, что местное время – “15:52”
- У меня установлен WordPress 4.9.6 и PHP 7.0.30.
- Настройки часового пояса в моем файле “php.ini” установлены правильно – когда я вызываю функции
date()
иdate_default_timezone_get()
из отдельного PHP-скрипта, они выводят корректную информацию. - Часы на моем веб-сервере Windows корректны и установлены на правильный часовой пояс.
- Время отображается неправильно, когда я вызываю следующую функцию WordPress (оно отстает на 4 часа от того, что должно быть):
current_time('Y-m-d H:i')
.
В этой теме говорится, что проблема вызвана плохим плагином. На самом деле, у меня был установлен именно этот плагин, но деактивация (а затем удаление) плагина не исправила проблему.
В этой теме говорится, что это связано с поврежденными определениями часового пояса на сервере. Там даны инструкции по исправлению этого для Linux, но не для Windows. Тем не менее, у меня есть другие сайты на WordPress, размещенные на том же сервере, и у них этой проблемы нет.
Проблема также была опубликована здесь: https://wordpress.org/support/topic/timezone-settings-utc-and-local-times-are-incorrect/
Это установлено в вашей базе данных и также используется в настройках PHP на сервере. Дважды проверьте настройки PHP, если вы можете ими управлять. Есть параметр часового пояса, который вы можете ввести в php.ini (PHP -v показывает вам все это). Для MySQL… вам нужно посмотреть на глобальные настройки, о которых я сейчас забываю.
Ответ или решение
Для решения проблемы с некорректными значениями UTC и локального времени на вашем сайте WordPress, выполните следующие шаги:
-
Проверка настроек часового пояса в WordPress:
- Зайдите в админ панель WordPress и перейдите в «Настройки» → «Общие».
- Убедитесь, что в пункте «Часовой пояс» установлен правильный часовой пояс, соответствующий вашему местоположению. Если вы хотите, чтобы время отображалось корректно, выберите свой часовой пояс из списка.
-
Проверка файла php.ini:
- Хотя вы упомянули, что в вашем
php.ini
файл установлен правильный часовой пояс, нужно убедиться, что он установлен корректно. Откройтеphp.ini
и найдите строку:date.timezone = "Europe/Moscow"
Убедитесь, что значение совпадает с вашим часовым поясом. После внесения изменений не забудьте перезапустить веб-сервер.
- Хотя вы упомянули, что в вашем
-
Проверка настроек MySQL:
- Убедитесь, что сервер MySQL также настроен на правильный часовой пояс. Подключитесь к MySQL и выполните следующий запрос:
SELECT @@global.time_zone, @@session.time_zone;
Если они отображают
SYSTEM
, это означает, что они зависят от настроек сервера. Для установки часового пояса в MySQL используйте команду:SET GLOBAL time_zone = 'Europe/Moscow';
Также можете добавить эту строку в конфигурационный файл
my.cnf
илиmy.ini
:[mysqld] default-time-zone = 'Europe/Moscow'
- Убедитесь, что сервер MySQL также настроен на правильный часовой пояс. Подключитесь к MySQL и выполните следующий запрос:
-
Проверка плагинов и тем:
- Деактивация плагинов иногда помогает, но в вашем случае, если это не решило проблему, попробуйте переключиться на стандартную тему WordPress (например, Twenty Twenty-One) и посмотрите, изменится ли отображаемое время.
-
Кэширование:
- Если на вашем сайте используется плагин кэширования, очистите кэш, чтобы изменения вступили в силу.
-
Обновление WordPress:
- Убедитесь, что вы используете актуальную версию WordPress. Хотя у вас стоит версия 4.9.6, рекомендуется обновить ее до последней стабильной версии, так как в новых релизах могут быть исправления для проблем с отображением времени.
-
Проверка кода:
- Если вы используете кастомный код для вывода времени, убедитесь, что он корректно учитывает локальный часовой пояс через функцию
current_time()
и передает нужный параметр.
- Если вы используете кастомный код для вывода времени, убедитесь, что он корректно учитывает локальный часовой пояс через функцию
Если после выполнения всех этих шагов проблема не решена, возможно, стоит рассмотреть возможность обращения к вашему хостинг-провайдеру для дальнейшего анализа настроек сервера или выполнения дополнительных проверок.