Когда я использую функцию PHP date()
на двух разных серверах, я получаю два разных результата, но оба сервера должны быть одинаковыми.
Я проверил файл 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 часов? Если да, то как его исправить?
UPDATE
Загруженные файлы конфигурации.
Сервер № 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 были одинаковые файлы и все, оказалось, что плагины не загружаются в том же порядке на каждом сервере, что позволило последнему подключенному плагину определить часовой пояс моего script.
Причина php -i
и phpinfo
отличается тем, что после использования date_default_timezone_set()
это влияет на то, что будет печатать phpinfo()
.
Исправление было гарантией того, что я нахожусь в часовом поясе, в котором мне нужно было пройти через date_default_timezone_set()
. Причина, по которой я не работал, прежде чем я разместил этот вопрос, состоял в том, что я объявил об этом до загрузки нескольких необходимых файлов из CMS, которые, вероятно, снова установили там часовой пояс.