2009-06-09 13 views
8

quando uso current_timestamp con MySQL, ottengo il tempo corretto, ma quando usotempo mysql e tempo php non la stessa

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

ottengo data con un ritardo ore (ad esempio, 4 : 42 PM è 17:42). Ho capito che entrambe le funzioni utilizzano l'ora locale del server: qualcuno può spiegare la differenza?

Grazie.

+1

Sei sicuro che il tuo MySQL e PHP sono lo stesso server, giusto? Alcuni host mettono MySQL su un server diverso. – ceejayoz

risposta

9

L'ora del sistema globale sarà impostato tramite il file/etc/localtime, che sarà sia un collegamento simbolico o una copia di un file di zona da/usr/share/zoneinfo/sulla maggior parte dei sistemi. Le applicazioni useranno questo come predefinito.

PHP può ignorare questa in due modi diversi:

  1. date.timezone in php.ini
  2. impostare la variabile ambiente TZ, ad esempio putenv("TZ=US/Central");
  3. date_default_timezone_set funzione (in PHP> = 5.1.0)

MySQL può ignorare questa eseguendo la seguente query subito dopo la connessione:

SET time_zone = 'US/Central' 
1

Forse il server PHP pensa che sia in un diverso fuso orario o utilizza locale e la luce del giorno diverso risparmio norme sull'orario.

+0

come faccio a ottenere da PHP il tempo predefinito del server elencato sul computer del server? La data.timezone di PHP non è impostata – daniel

2

Non ci sono impostazioni locali php, si prende da php.ini, non dal tempo del sistema

Problemi correlati