php.ini часовой пояс по умолчанию против date.timezone

Когда я использую PHPdate() работать на двух разных серверах, я получаю два разных результата, но оба сервера должны быть одинаковыми.

Я проверилphp.ini файл на сервере № 1, где время правильное и выглядит следующим образом:

date/time support                   enabled
"Olson" Timezone Database Version   0.system
Timezone Database                   internal
Default timezone                    America/Chicago

Directive        Local Value        Master Value
---------------------------------------------------
date.timezone    America/Chicago    America/Chicago

Я проверил на сервере № 2, и это выглядит следующим образом:

date/time support                   enabled
"Olson" Timezone Database Version   0.system
Timezone Database                   internal
Default timezone                    UTC

Directive        Local Value        Master Value
---------------------------------------------------
date.timezone    America/Chicago    America/Chicago

Единственное отличие, которое я вижу, это "Часовой пояс по умолчанию " значение.

Дата / время для обоих серверов отображаются как:

Server #1: 10/23/2012 09:40:39
Server #2: 10/23/2012 14:40:39

Я подтвердил, что оба сервера используютphp.ini расположен в/etc и я также искал в обоих веб-каталогах любое место, где часовой пояс мог бы быть перезаписан:

grep -r "date_default_timezone_set" *

Но в этом отношении они оба содержат одинаковые файлы с одинаковыми настройками.

Является "Часовой пояс по умолчанию " какие'Вызывает 5-часовую разницу? Если так, как я могу это исправить?

ОБНОВИТЬ

Загруженные файлы конфигурации.

Сервер № 2 содержит два дополнительных INI-файла:

/etc/php.d/snmp.ini
/etc/php.d/apc.ini

php -i результаты.

Сервер № 1:

date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/Chicago

Directive => Local Value => Master Value
date.timezone => America/Chicago => America/Chicago

Сервер № 2:

date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/Chicago

Directive => Local Value => Master Value
date.timezone => America/Chicago => America/Chicago

Какие'Интересно отметить, что по какой-то причинеЧасовой пояс по умолчанию " не совпадает на сервере № 2 при просмотре черезphp -i противphpinfo() на веб-странице.

РЕШЕНИЕ

Проблема была с CMS и ее плагинами. Хотя на серверах № 1 и № 2 были одинаковые файлы и все, похоже, что плагины загружаются не в одном и том же порядке на каждом сервере, что позволило последнему загруженному плагину определить часовой пояс моего скрипта.

Причинаphp -i а такжеphpinfo отличается, потому что после того, как вы используетеdate_default_timezone_set(), это влияет на то, чтоphpinfo() напечатает.

Исправление было гарантией того, что ям в часовом поясе мне нужно было черезdate_default_timezone_set(), Причина, по которой неЯ работал до того, как опубликовал этот вопрос, потому что я объявил об этом до загрузки нескольких необходимых файлов из CMS, что, вероятно, снова установило там часовой пояс.

 John V.23 окт. 2012 г., 17:03
Системное время на обоих серверах одинаковое?
 NightHawk23 окт. 2012 г., 17:07
@SDC Да, я согласен. На данный момент яЯ просто пытаюсь заставить их быть такими же. Если я могу сделать это, я могу установить их в UTC.
 Megamind Saiko18 июн. 2017 г., 17:57
У меня была такая же проблема, и я обнаружил, что конфигурации Laravel перезаписывают часовой пояс по умолчанию в php.ini
 NightHawk23 окт. 2012 г., 17:04
@AlexLunix Да, я только что проверил, и они оба одинаковы:Tue Oct 23 10:03:57 CDT 2012
 SDC23 окт. 2012 г., 17:04
это действительно хорошая идея, чтобы настроить все ваши серверы для использования UCT в качестве базовой даты. Это делает все намного более предсказуемым.

Ответы на вопрос(6)

Вот код:

[Date]
date.timezone = ('America/New_York')

date.default_latitude = 31.7667

date.default_longitude = 35.2333

date.sunrise_zenith = 90.583333

date.sunset_zenith = 90.583333

Просто поменяйdate.timezone = ('America/New_York') в нужный вам часовой пояс.

Источник.

 Owen Beresford05 февр. 2014 г., 15:30
Что делают скобки в первой строке? Документы неих нет ...

Проверить "Загруженный файл конфигурации " значение в выводе phpinfo (), чтобы убедиться, чтоизменить правильный файл php.ini. (Это укусило меня не раз!)Когда вы смотрите на вывод phpinfo (), проверьте "Проанализированы дополнительные файлы .ini строка, чтобы увидеть, есть ли дополнительные файлы INI анализируются при запуске через веб-сервер.date.timezone может быть установлен с помощью функции ini_set. У вас есть код, который это делает? Обязательно проверьте любой код, который может быть запущен из-за настройки ini auto_prepend.
 NightHawk23 окт. 2012 г., 18:52
[2.] Я 'мы просмотрели оба файла и тамНичего не значит о времени в них. [3.] Я выполнил поиск на обоих серверах и толькоini_set функции, которые я видел, связаны с отображением ошибок.
 macio.Jun29 авг. 2013 г., 20:58
+1 за проверкуЗагруженный файл конфигурации " в phpinfo ()
 NightHawk23 окт. 2012 г., 17:41
[1.] Просто дважды проверил еще раз, и да, они оба загружены из/etc/php.ini [2.] Я заметил, что на сервере № 2 есть два дополнительных INI-файла:snmp.ini а такжеapc.ini, [3.] Буду ли я искать что-то вроде?init_set(date.timezone
 bradym23 окт. 2012 г., 18:25
[2] Эти INI-файлы не должныу меня нет ничего для date.timezone, но ябуду проверять в любом случае. [3] Закрыть, искать вызовы функций ini_set -php.net/ini_set

http://us.php.net/manual/en/function.date-default-timezone-get.php

Среда TZ имеет приоритет над значением по умолчанию php.ini; может бытьпричина почему Вы можете исправить это, явно вызвав date_default_timezone_set.

Решение Вопроса

date() опирается наdate.timezone Настройка INI. Поскольку один из них - Чикаго (Коннектикут), а другой - UTC, это ваша разница в 5 часов.

я верю на PHP> 5.2 вы должны получить:

Предупреждение PHP: Неизвестно: полагаться на систему небезопасноНастройки часового пояса. Вытребуется использовать настройку date.timezone или функцию date_default_timezone_set ().

Я бы посоветовал вам взглянуть на новыйDateTime возражать или использовать UTC в соответствии с рекомендациямиSDC.

 Jason McCreary23 окт. 2012 г., 17:30
Интересно. Возможно ли, что ваша командная строка PHP и ваш веб-сервер 'с PHP разные?
 Jason McCreary23 окт. 2012 г., 20:29
Каково было решение?
 NightHawk23 окт. 2012 г., 17:52
Междуphp -i а такжеphpinfo()загруженный файл конфигурации совпадает на обоих серверах # 1 и # 2. Дата сборки отключена на 5 минут, но они совпадают вphp -i для сервера № 1 и № 2. Версия PHP API и следующие значения совпадают. Но по какой-то причине, под DATE, вphp -i на сервере №1 "Часовой пояс по умолчанию " Матчи (America/Chicago), но на сервере № 2,php -i отчетыAmerica/Chicago, ноphpinfo() отчеты.UTC
 Jason McCreary23 окт. 2012 г., 17:37
сравнитьphpinfo() противphp -i, Конкретно версии и загруженные INI. Смотрите постbradym тоже.
 Jason McCreary23 окт. 2012 г., 17:17
Это'не установлен где-то, следовательно,Default timezone UTC на сервере № 2.
 Jason McCreary23 окт. 2012 г., 17:21
Вы уверены, что INI?с одинаковы? Запустите следующее на обоих серверах:php -i | grep timezone
 NightHawk23 окт. 2012 г., 17:34
Все возможно. Я унаследовал эти серверы, поэтому яЯ не уверен, как это было настроено и настроено. Каков был бы способ узнать это?
 SDC23 окт. 2012 г., 17:11
+1 за рекомендацию класса DateTime. Это неНе так сильно запутаться в часовых поясах, как старые функции обработки дат. И это'гораздо более функциональным тоже.date() и его друзья должны быть брошены в яму и никогда не возвращаться.
 NightHawk23 окт. 2012 г., 17:26
Какие'Интересно отметить, что при использованииphp -i на сервере № 2 "Часовой пояс по умолчанию " указан какAmerica/Chicago но вphpinfo() Это'S перечислены как.UTC
 NightHawk23 окт. 2012 г., 17:23
Сервер № 1:Default timezone => America/Chicago date.timezone => America/Chicago => America/Chicago  Сервер № 2:PHP Warning: PHP Startup: apc: Unable to initialize module Module compiled with module API=20060613 PHP compiled with module API=20090626 These options need to match in Unknown on line 0 Default timezone => America/Chicago date.timezone => America/Chicago => America/Chicago  Я вижу предупреждение. Может ли это иметь какое-либо отношение к этому?
 NightHawk23 окт. 2012 г., 17:10
date.timezone устанавливается внутри php.ini. И им обоим присвоено одинаковое значение на обоих серверах. Я'Я не уверен, где "Часовой пояс по умолчанию " установлено.
 NightHawk23 окт. 2012 г., 17:17
Куда мне пойти установить это? Или где я могу пойти на сервер № 1, чтобы сбросить это?

был установлен в:

/etc/php5/cli/php.ini

Я мог тогда проверить с:

php -i | grep "часовой пояс"

 Pascal_dher18 апр. 2016 г., 14:27
Для интерфейса командной строки (cli) да. Но настройки apache web php находятся в /etc/php5/apache2/php.ini

но оно не работает (т. Е. Локальное значение и главное значение отличаются), вам может потребоваться обновить что-то подобное в вашем файле конфигурации apache:

<ifmodule mod_php5.c="">
   php_value date.timezone "Europe/Paris"
</ifmodule>

Моду, который удалил вышеуказанный ответ раньше: я искал часы, чтобы найти это решение. Дон»Удалить ответ только потому, что вы считаете его дублирующим.

Ваш ответ на вопрос