php.ini domyślna strefa czasowa vs. date.timezone
Kiedy używam PHPdate()
działają na dwóch różnych serwerach, otrzymuję dwa różne wyniki, ale oba serwery powinny być takie same.
Sprawdziłemphp.ini
plik na serwerze # 1, gdzie czas jest poprawny i wygląda następująco:
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
Sprawdziłem na serwerze # 2 i wygląda to następująco:
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
Jedyną różnicą, jaką widzę, jest wartość „Domyślna strefa czasowa”.
Data / godzina bieżącego wyświetlania obu serwerów jako:
Server #1: 10/23/2012 09:40:39
Server #2: 10/23/2012 14:40:39
Potwierdziłem, że oba serwery używająphp.ini
znajduje się w obrębie/etc
przeszukałem także oba katalogi internetowe w dowolnym miejscu, w którym strefa czasowa może zostać nadpisana:
grep -r "date_default_timezone_set" *
Ale pod tym względem oba zawierają te same pliki z tymi samymi ustawieniami.
Czy „Domyślna strefa czasowa” powoduje różnicę 5 godzin? Jeśli tak, jak mam to poprawić?
AKTUALIZACJA
Załadowane pliki konfiguracyjne.
Serwer # 2 zawiera dwa dodatkowe pliki ini:
/etc/php.d/snmp.ini
/etc/php.d/apc.ini
php -i wyniki.
Serwer 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
Serwer # 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
Ciekawe jest to, że z jakiegoś powodu „Domyślna strefa czasowa” nie pasuje na serwerze # 2 podczas przeglądaniaphp -i
przeciwphpinfo()
na stronie internetowej.
ROZWIĄZANIE
Problem tkwił w CMS i jego wtyczkach. Podczas gdy serwer # 1 i # 2 miały te same pliki i wszystko, wydaje się, że wtyczki nie są ładowane w tej samej kolejności na każdym serwerze, co umożliwiło załadowanie ostatniej wtyczki w celu określenia strefy czasowej mojego skryptu.
Powódphp -i
iphpinfo
różni się, ponieważ po użyciudate_default_timezone_set()
, wpływa na cophpinfo()
wydrukuje.
Poprawka polegała na upewnieniu się, że jestem w strefie czasowej, w której muszę być za pośrednictwemdate_default_timezone_set()
. Przyczyną, która nie zadziałała dla mnie, zanim opublikowałem to pytanie, było to, że zadeklarowałem to przed załadowaniem kilku wymaganych plików z CMS, które prawdopodobnie ustawiły tam strefę czasową.