2009-06-09 8 views
8

Lorsque j'utilise current_timestamp avec MySQL, je reçois le bon moment, mais quand je l'utilisetemps mysql et le temps php pas le même

$mysqldate = date('Y-m-d H:i:s');

je reçois la date avec avec une heure de retard (par exemple, 4 : 42 PM est 17h42). J'ai compris que les deux fonctions utilisent l'heure locale du serveur - quelqu'un peut-il expliquer la différence?

Merci.

+1

Vous êtes certain que votre MySQL et PHP sont sur le même serveur, non? Certains hébergeurs mettent MySQL sur un serveur différent. – ceejayoz

Répondre

9

Le temps du système global sera réglé via le fichier/etc/localtime, qui sera soit un lien symbolique ou une copie d'un fichier de zone de/usr/share/zoneinfo/sur la plupart des systèmes. Les applications l'utiliseront par défaut.

PHP peut remplacer ce dans deux manières différentes:

  1. date.timezone dans php.ini
  2. définissant la variable d'environnement TZ, par exemple, putenv("TZ=US/Central");
  3. fonction date_default_timezone_set (en PHP> = 5.1.0)

MySQL peut passer outre en exécutant la requête suivante immédiatement après la connexion:

SET time_zone = 'US/Central' 
1

Peut-être que votre serveur PHP pense qu'il est dans un fuseau horaire différent ou utilise différentes règles de l'heure d'locale et la lumière du jour.

+0

comment puis-je obtenir PHP pour me donner la valeur par défaut, l'heure du serveur qui est répertoriée sur l'ordinateur du serveur? Le fichier date.timezone de PHP n'est pas défini – daniel

2

Il y a des paramètres régionaux php, il le prend de php.ini, pas de temps du système

Questions connexes