2016-05-02 6 views
1

В моей php.ini Я установил:php.ini «date.timezone» не имеет никакого эффекта

date.timezone = "Etc/UTC" 

и время сервера является UTC + 0 тоже, но когда я пытаюсь этот сценарий, чтобы получить часовой пояс:

<?php print(date_default_timezone_get()); ?> 

он возвращает

Europe/Berlin

который UTC+2, а не UTC+0, и я не вижу, как он туда попадает.

Просто clearify:

  • Я сохранил нужный файл на правильном пути и перезапустить мой сервер
  • Я не хочу, чтобы изменить мои сценарии, потому что я уже использовал date() способ часто
  • Я хочу, чтобы время, чтобы быть UTC+0 для PHP, просто изменив конфигурацию
  • Я хочу, чтобы это было UTC+0 в любое время, игнорируя летнее/зимнее время
+1

print (date_default_timezone_get()) проверить это перед вашей операцией –

+0

Лето/зима? – Andreas

+0

Европа/Берлин не UTC –

ответ

0

В комментариях, Minesh Patel сказал мне, чтобы проверить, есть ли что-то переписывая мой вариант, поэтому я просмотрел свой php.ini за Europe/Berlin, и выяснилось, что был еще один date.timezone, который перезаписал его.

1

Вы проверили переменную окружения «TZ» для пользователя веб-сервера? Если он установлен, то установка date.timezone php.init не будет работать, как и следовало ожидать, как указано в php manual:

date.timezone строку часовой пояс по умолчанию, используемый всеми функциями даты/времени. До PHP 5.4.0 это будет работать, только если переменная среды TZ не была установлена. Порядок приоритета, для которого используется часовой пояс, если ни один из них не указан явно, описан на странице date_default_timezone_get().

+0

Я действительно не знаю, что такое переменная «TZ» и где ее найти ._. – timmyRS

+0

Если вы находитесь в Linux, просто введите 'echo $ TZ', чтобы увидеть текущую настройку или' export TZ = UTC', чтобы установить ее. Но вы должны сделать это как пользователь веб-сервера перед запуском сервера. Обычно это выполняется в скрипте инициализации во время загрузки. Попробуйте 'redhat-config-date' или' dpkg-reconfigure tzdata' для его настройки (в зависимости от используемого вами дистрибутива Linux) –

2

Эта линия, безусловно, правильное место, чтобы изменить по умолчанию часовой пояс.

  1. Вы действительно меняете правильный php.ini? Некоторые настройки могут содержать несколько файлов .ini. Запустите phpinfo(); и отметьте Загруженный файл конфигурации, чтобы узнать, является ли он этим файлом.

  2. Проверьте, нет ли других определений этого параметра в файле. Он может переопределить то, что вы установили, только скопировав его в любом месте.

  3. Проверьте, не изменил ли код то, что вы установили в .ini-файле. date_default_timezone_set() устанавливает его (и переопределяет) в PHP.

  4. Проверьте, есть ли в данный момент часовой пояс. phpinfo().

+0

По какой-то причине часовой пояс UTC + 2 (Европа/Берлин), и я не знаю, что переопределяя его. Также конфигурация правильная. – timmyRS

+0

@timmyRS в чем проблема? –

+0

@ MineshPatel написал это в моем вопросе. там действительно было что-то в конфигурации, переопределяющей его ... – timmyRS

0

Я предлагаю вам передать этот список, чтобы выбрать часовой пояс:

PHP timezones

Предупреждение: Не используйте любой из временных зон, перечисленных в следующей ссылке, они существуют только для обратной совместимости причин, кроме UTC:

PHP timezones only for backward compatible reasons

настоятельно рекомендуется использовать правильный часовой пояс для вашего местоположения, такие как Europe/Berlin:

date.timezone = "Europe/Berlin" 
+0

Моя проблема в том, что часовой пояс уже есть Европа/Берлин, но ДОЛЖЕН быть UTC + 0 – timmyRS

Смежные вопросы