Используемая ОС FreeBSD 9.x Проблема выглядит следующим образом. В системе установлена тайм-зона Европа/Москва Время синхронизируется с timeserver.ru, т.е. постоянно более-менее точное, в терминале отображается соответствующее действительному. Но при PHP запросе Код (Text): echo(DATE('День: D, Время: Hч.iмин., Дата d F Y ')); На странице получаю смещение на -1 час. Пожалуйста, подскажите причину такого разброса во времени.
Не думаю, что это есть причина, т.к. системное время я тоже перевел и синхронизировал, "апач" перезапустил, "ребут" системы тоже не дал результата. Вопрос в причине разницы системного времени и времени отображаемом при обращении к странице с указанным выше запросом.
А ты уверен, что у тебя там всякие файлики зон правильно обновлены? А то может оно на уровне системы косячит? Сколько времени в консоли пишет?
Прошу, читайте внимательно, дабы не раздувать тему. В консоли системное время в полном порядке, отображается корректным. Время искажается при выводе на странице, через PHP...
что именно означает в консоли? консольная тулза вывода времени? ну она должна показывать то что в настройках системы задано. или консольный пхп? ну так консольный и веб-пхп имеют разную конфигурацию и где-то могла затесаться ошибка. и еще раз в сторону того что игорь сказал - проверьте определения зон. у нас в россии какая нога зачесалась так часы и переводим. ментейнерам (по всему миру) лишь остается писать дифинишны а сисадминам (по всему миру) ставить обновления. у вас последний этап может быть упущен.
$ php -r "date_default_timezone_set('Asia/Yekaterinburg'); echo date('Y-m-d H:i:s');" вывелось время, отличающееся на 1 час от реального $ sudo apt-get update $ sudo apt-get upgrade … Setting up tzdata (2014h-0wheezy1) … $ php -r "date_default_timezone_set('Asia/Yekaterinburg'); echo date('Y-m-d H:i:s');" вывелось реальное время
Вот PHP сравнивающий тайм-зону установленную в нем и php.ini Код (Text): date_default_timezone_set('Europe/Moscow'); $script_tz = date_default_timezone_get(); if (strcmp($script_tz, ini_get('date.timezone'))){ echo 'Временная зона скрипта отличается от заданной в INI-файле.'; } else { echo 'Временные зоны скрипта и настройки INI-файла совпадают.'; } Временная зона совпадает. В системе тоже установлена тайм-зона Europe/Moscow, но время разбегается. Что в PHP может влиять на разброс времени? Добавлено спустя 10 минут 54 секунды: Разобрался в причине такого разнобоя. Дело оказалось в определении тайм-зоны в FreeBSD. Если рассуждать логически, то если часовой пояс совпадает с Москвой, то он должен быть Moscow+00, но только не в этой системе, что бы время сошлось пришлось установить часовой пояс со сдвигом на час(Moscow-01) назад и отредактировать время в консоли. Тема получилась не про PHP, по этому лучше её удалить. Огромная благодарность за помощь.
биос время должно быть в utc. оно одно на всем земном шарике. система должна принять всего одну опцию - офсета от ютиси. и всё. факт того что пришлось москву минус час делать говорит о том что либо ютиси вы не используете либо что не обновлен пакет tzdata под последний указ президента.
теме up! обнаружил, что мой cygwin тоже страдает от перехода на зимнее время. консольная date выдала неправильное время. казалось бы он работает поверх винды, которая уже в курсе. НО! у него свои описатели часовых поясов. в cygwin, насколько я понял, обновления по нашей проблеме не было, но структура tzdata используется та же самая, что в linux. поэтому я тупо скопировал описатели с линукса в цыгвин: Код (Text): $ echo $TZ Asia/Yekaterinburg $ cd /usr/share/zoneinfo/Asia $ scp artoodetoo@mylinuxbox:/usr/share/zoneinfo/Asia/Yekaterinburg . date стал выдавать правильные цифры