Quando utilizzo la funzione PHP date()
su due server diversi, ottengo due risultati diversi, ma entrambi i server dovrebbero essere uguali.php.ini fuso orario predefinito vs. date.timezone
ho controllato il file php.ini
sul server di # 1, dove il tempo è corretto, e appare come segue:
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
ho controllato sul server di # 2 e sembra come segue:
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
L'unica differenza che vedo è il valore "Fuso orario predefinito".
La data/ora per entrambi i server visualizzazione corrente come:
Server #1: 10/23/2012 09:40:39
Server #2: 10/23/2012 14:40:39
mi ha confermato che entrambi i server utilizzano il php.ini
trova all'interno /etc
e ho cercato anche entrambe le directory web per qualsiasi posto fuso orario potrebbe essere sovrascritto:
grep -r "date_default_timezone_set" *
Ma a questo proposito, entrambi contengono gli stessi file con le stesse impostazioni.
"Timezone predefinito" qual è la causa della differenza di 5 ore? Se sì, come lo correggo?
UPDATE
file di configurazione di caricamento.
Server # 2 contiene due ulteriori file ini:
/etc/php.d/snmp.ini
/etc/php.d/apc.ini
php risultati -i.
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
La cosa interessante da notare qui è che per qualche motivo il "fuso orario predefinito" non corrisponde sul server di # 2 quando visualizzandolo tramite php -i
versus phpinfo()
su una pagina web.
SOLUZIONE
Il problema era con il CMS e dei suoi plug-in. Mentre i server # 1 e # 2 avevano gli stessi file e tutto, sembra che i plugin non siano caricati nello stesso ordine su ciascun server, il che ha permesso l'ultimo plugin caricato per determinare il fuso orario del mio script.
Il motivo php -i
e phpinfo
è diverso perché dopo aver utilizzato date_default_timezone_set()
, influisce su ciò che verrà stampato phpinfo()
.
La correzione era la garanzia di essere nel fuso orario in cui avevo bisogno di essere in via date_default_timezone_set()
.Il motivo per cui non ho funzionato prima di aver postato questa domanda era perché l'ho dichiarato prima di caricare alcuni file richiesti dal CMS, che probabilmente impostano di nuovo il fuso orario.
L'ora di sistema su entrambi i server è uguale? –
è davvero una buona idea configurare tutti i server per utilizzare UCT come data base. Rende tutto molto più prevedibile. – SDC
@AlexLunix Sì, ho appena controllato e sono entrambi uguali: 'Tue Oct 23 10:03:57 CDT 2012' – NightHawk