2010-08-25 8 views
7

phpinfo() mostra il nostro sistema per utilizzare "" Olson "Timezone Database Version 2010.3". I penso che sia che non è aggiornato, ma non è possibile individuare una posizione autorevole che possa confermarlo.Come aggiornare timezonedb in PHP (aggiornando le informazioni sui fusi orari)?

(a) Posso aggiornare le informazioni sui fusi orari per PHP nel suo complesso? (b) Se sì, come posso aggiornarlo? Ho visto le istruzioni a http://www.electrictoolbox.com/correct-php-timezone/ in cui si dice che, dopo l'installazione del modulo appropriato, si dice che devo:

You should add "extension=timezonedb.so" to php.ini 

abbiamo bisogno di farlo? PHP non dovrebbe utilizzare automaticamente il file corretto?

+1

Sì, bisogna aggiungere l'estensione = timezonedb.so in php.ini, altrimenti come php saprebbe di cui ha bisogno per usare quell'estensione o meno – ursuleacv

+2

'sudo pecl install timezonedb' –

risposta

4

per quanto ne so, il Timezone DB (TDB) è distribuito all'interno di PHP stesso. Per questo motivo il DB del fuso orario diventa obsoleto dopo un po 'di tempo e si dovrebbe aggiornare PHP o TDB per riflettere le modifiche in TDB.

C'è un'estensione PECL che rilascia nuovi pacchetti TDB che è possibile scaricare, installare e utilizzare nelle vecchie installazioni PHP.

Non sono a conoscenza di un modo per aggiornare TDB direttamente in PHP. L'estensione PECL è stata creata per risolvere questo problema.

+0

Ciao dwich - stai indicando che se aggiorniamo PHP stesso dovrebbe funzionare altrettanto bene? Avrei pensato che gli aggiornamenti PHP fossero pochi e lontani tra loro ... – tzmatt7447

+0

Per quanto riguarda PECL - Im 'non ho familiarità con il concetto - questa è una parte incorporata standard di PHP ora? – tzmatt7447

+1

@ tzmatt7447: se aggiorni PHP, potrebbe contenere una versione più recente di TDB, ma non puoi essere sicuro che sia la più recente. Potrebbero esserci anche nuove versioni di TDB tra le versioni regolari di PHP, quindi non si può essere sicuri che se aggiorni PHP otterrai il TDB più recente e - PHP non verrà rilasciato solo perché TDB è stato aggiornato. – dwich

2

È meglio aggiornare la versione di PHP (in particolare, se si desidera aggiornarlo su una macchina Windows, altrimenti è necessario compilare l'estensione da soli) perché per quanto mi ricordo l'estensione non è Windows- Pronto solo unix/linux - quindi se vuoi farlo su Windows dovrai compilarlo tu stesso usando il compilatore VC6 OR VC9).

Quindi, se è possibile aggiornare la versione di PHP che sarebbe la soluzione più veloce (è stato atleast per me), naturalmente PHP potrebbe non avere le ultime informazioni sul fuso orario db ma ho dovuto risolvere un problema con il fuso orario db e è stato corretto nella versione successiva di PHP che avevo. Se lo stai facendo per unix/linux potresti anche provare l'estensione PECL penso che potrebbe essere più facile per te allora & più veloce.

+3

Dalla versione 2014.10 l'estensione può essere scaricata come dll per windows, fare riferimento a https://pecl.php.net/package/timezonedb – ursuleacv

2

L'estensione PECL è letteralmente il DB del fuso orario. Ogni volta che viene rilasciata una nuova versione del DB da here, l'estensione viene ricompilata con il DB del fuso orario aggiornato.

Quindi, si sovrascrive effettivamente la vecchia estensione con la versione appena ricompilata e si riavvia il server Web; supponendo che PHP venga usato come un modulo.

0

Per fare un aggiornamento completo fuso orario (Abbiamo avuto problemi con errato fuso orario Russia/Mosca):

#for OS - CentOS and MySQL 
yum update tzdata 
mysql_tzinfo_to_sql /usr/share/zoneinfo 
#for PHP 
pecl upgrade timezonedb 
pecl upgrade intl 

#dependencies you may need for the above: 
yum install gcc 
yum install gcc-c++ 
yum install libicu-devel