Обязательно установите date.timezone в php.ini

  • Обязательно установите date.timezone в php.ini

    Антон Долганин 24 Февраля 2015 8:12 9592
    Возможно, мне просто не повезло с настройщиками трех серверов, но на каждом из них не стояла зона в php.ini.
    Вот эта:
    date.timezone = 


    С недавних пор это стало приводить к фатальному падению скриптов на кроне, из-за предупреждения PHP:
    DateTime::__construct(): It is not safe to rely on the system's timezone settings.

    Как следствие, агенты не выполнялись и все стопорилось. Будьте аккуратны, а лучше сразу проверьте в PHP настройку, и если она не задана, выставьте:
    date.timezone = Europe/Moscow

    .
Юрий
24 Февраля 2015 11:07
Рекомендация должна звучать даже так. Используйте родное Битриксовое окружение, свежее и будет вам счастье. Изменение связанные с датой и временем делаются через меню 1.6 легко и быстро.

Смена таймзоны только в PHP создаст другие проблемы, например есть шанс, что отвалятся синхронизации с 1С :) и много других веселых штучек.  
Антон Долганин
24 Февраля 2015 11:40
Юрий, серваки ставились когда окружение было, мягко говоря, сыроватым (первые версии когда его были) :) да и привыкли к нативному.

Я в ТП отписал в любом случае, попросил включить в тест продукта (а там уже и снабдят правильными комментариями, я думаю).
Юрий
24 Февраля 2015 12:06
Проверку включат, но после такого изменения, сработают другие проверки, которые напишут проблему уже с разбежкой времени PHP и Mysql например.
Юрий
24 Февраля 2015 12:08
Поэтому я и предложил более простой вариант, переехать на новую машину, не так сложно. если конечно проект не на большом количестве серверов. А в конечном итоге выигрыша будет больше.
Scrooge
4 Марта 2015 21:37
Как там говорят? Не навреди? :)
Scrooge
4 Марта 2015 21:39
Да и в самом Битрикс что-то не работает без заданной date.timezone или время с MySQL не совпадает, уже не помню точно, надо задавать обязательно, у меня это как маст-хэв
Евгений
18 Марта 2015 14:03
Также, если проект работает на nginx + php-fpm, php.ini может быть разный для web и для консольных скриптов и date.timezone нужно настроить и там, и там.
Sergey
28 Июня 2016 12:07
У меня та же ошибка и перестали выполнятся агенты. date.timezone в php.ini установлен.
Ругается на файлы -
bitrix/modules/main/lib/type/datetime.php(21): DateTime->__construct()
bitrix/modules/security/lib/session.php(74): Bitrix\Main\Type\DateTime->__construct()
bitrix/modules/main/lib/entity/base.php(151): Bitrix\Security\SessionTable::getMap()

Решения проблемы пока что так и не нашел.
Лекс
24 Апреля 2018 13:04
Да чихать хотел Битрикс на всё.
Везде стоит
date.timezone = Europe/Moscow
В файлах


etc/php . ini
etc/php.d/bitrixenv  .ini


В консоли ОС выводится верное время. date()
В скриптах выводится date() на час больше, при этом time() выводит верное время UNIX.

Вопрос: ну и как это понимать?

Версия bitrixvm 5.1.8. php-5.6.35