sur Shell, l'heure de mon serveur est la suivante (simple date
dans bash): dim. 29 août 10:37:12 EDT 2010
quand j'exécute le code php -r "echo date('Y-m-d H:i:s');"
je reçois: 2010-08-29 10:37:10
mais quand j'exécute un script php qui a echo date('Y-m-d H:i:s');
, je reçois une heure différente, puisque php pense que le fuseau horaire est au format UTC (l'heure du serveur correspond à l'heure avancée de l'Est).
Mon fichier php.ini n'a pas de fuseau horaire et je ne voudrais rien changer car je n'ai aucune idée de l'impact que cela aurait sur d'autres sites tournant sur ce serveur.
Existe-t-il un moyen simple d'obtenir l'heure du serveur, dans le fuseau horaire défini pour le serveur?
Selon les directives php.ini page de manuel, le fuseau horaire n'est pas défini par défaut si vous utilisez une version antérieure à 5.3. Ensuite, si vous regardez la page pour date_default_timezone_get
, il utilise l'ordre suivant pour obtenir le fuseau horaire:
* Reading the timezone set using the date_default_timezone_set() function (if any)
* Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0)
* Reading the value of the date.timezone ini option (if set)
* Querying the Host operating system (if supported and allowed by the OS)
UTC est la valeur par défaut si toutes ces solutions échouent. C'est donc probablement un bon point de départ.
Le serveur doit toujours avoir un fuseau horaire spécifié dans le fichier php.ini
. PHP 5.3 émet même des avis si ce n'est pas le cas et l'extension DateTime
lève des exceptions si vous essayez de construire des objets sans spécifier explicitement un fuseau horaire (avec un objet DateTimezone
) ou en ayant un par défaut (via date.timezone
ou date_default_timezone_set
).
Selon ce que vous décrivez, les scénarios les plus probables sont les suivants:
date_default_timezone_set('UTC')
ou son équivalent.En retard pour la fête, mais si vous souhaitez définir le fuseau horaire sans modifier php.ini, vous pouvez insérer dans le code php l'une des chaînes suivantes:
date_default_timezone_set('GMT');
date_default_timezone_set('Europe/Zurich');
date_default_timezone_set('America/New_York');
Avez-vous essayé d’utiliser date_default_timezone_set () Les fuseaux horaires américains sont disponibles ici http://www.php.net/manual/en/timezones.america.php