Совсем недавно вся страна снова перешла на зимнее время. Казалось бы, все уже успели обновить и подправить свои конфиги и код приложений, но сегодня я обнаружил еще одно неожиданное место где потребуются изменения – это PHP.
Описание проблемы
Все актуальные версии Windows должны были получить обновление КВ2998527, которое обновляло информацию о часовых поясах в системе. Как ни странно, PHP под Windows не берёт информацию из системы и хранит базу часовых поясов где-то у себя внутри.
Результатом этой ошибки является несоответствие даты которую создаёт конструктор DateTime()
. Ну или, если по старинке, date("d.m.Y H:i:s")
вернёт время на час больше.
Многочасовое ковыряние в поисковиках не позволило найти рабочего способа обновить эту базу. Вопрос на хабровском ресурсе toster также оказался бесполезным.
Решение проблемы
Как это не банально звучит, помогло обновление версии php на рабочем компе с версии 5.4.30 до 5.4.34, которое было скачено отсюда. Видимо, там базу временных зон обновили =)