php.ini default timezone vs. date.timezone
Wenn ich PHP benutzedate()
Funktion auf zwei verschiedenen Servern, bekomme ich zwei unterschiedliche Ergebnisse, aber beide Server sollten gleich sein.
Ich habe das überprüftphp.ini
Datei auf Server 1, auf dem die Uhrzeit korrekt ist und wie folgt aussieht:
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
Ich habe Server 2 überprüft und es sieht folgendermaßen aus:
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
Der einzige Unterschied, den ich sehe, ist der Wert "Standard-Zeitzone".
Das Datum / die Uhrzeit für beide Server wird aktuell angezeigt als:
Server #1: 10/23/2012 09:40:39
Server #2: 10/23/2012 14:40:39
Ich habe bestätigt, dass beide Server diephp.ini
befindet sich innerhalb/etc
Außerdem habe ich beide Webverzeichnisse nach Orten durchsucht, an denen die Zeitzone möglicherweise überschrieben wird:
grep -r "date_default_timezone_set" *
In dieser Hinsicht enthalten beide dieselben Dateien mit denselben Einstellungen.
Ist "Standard-Zeitzone" der Grund für den Unterschied von 5 Stunden? Wenn ja, wie korrigiere ich das?
AKTUALISIEREN
Geladene Konfigurationsdateien.
Server 2 enthält zwei zusätzliche INI-Dateien:
/etc/php.d/snmp.ini
/etc/php.d/apc.ini
PHP-i Ergebnisse.
Server 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
Server 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
Interessanterweise stimmt die "Standard-Zeitzone" auf Server 2 nicht überein, wenn sie über angezeigt wirdphp -i
gegenphpinfo()
auf einer Webseite.
LÖSUNG
Das Problem war mit dem CMS und seinen Plugins. Während Server 1 und 2 die gleichen Dateien und alles hatten, scheint es, dass Plugins nicht in der gleichen Reihenfolge auf jedem Server geladen werden, sodass das zuletzt geladene Plugin die Zeitzone meines Skripts bestimmen konnte.
Der Grundphp -i
undphpinfo
anders ist da nach dem gebrauchdate_default_timezone_set()
, es beeinflusst wasphpinfo()
wird gedruckt.
Die Lösung bestand darin, sicherzustellen, dass ich in der Zeitzone bin, in der ich mich befinden musstedate_default_timezone_set()
. Der Grund, der vor dem Posten dieser Frage für mich nicht funktioniert hat, war, dass ich dies vor dem Laden einiger erforderlicher Dateien aus dem CMS deklariert habe, wodurch die Zeitzone dort wahrscheinlich erneut festgelegt wurde.