2010-08-25 26 views
7

phpinfo() muestra que nuestro sistema está utilizando "" Olson "Timezone Database Version 2010.3". Creo que está desactualizado, pero no puedo encontrar una ubicación autorizada que pueda confirmarlo.¿Cómo actualizar timezonedb en PHP (actualizar la información de las zonas horarias)?

(a) ¿Puedo actualizar la información de las zonas horarias para PHP en general? (b) De ser así, ¿cómo actualizo esto? Vi las instrucciones al http://www.electrictoolbox.com/correct-php-timezone/ donde dice que, después de instalar el módulo correspondiente, que dice que tengo que:

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

qué tenemos que hacer eso? ¿No debería PHP usar automáticamente el archivo correcto?

+1

Sí hay que añadir la extensión = timezonedb.so en php.ini, si no ¿cómo php sabría que necesita para usar esa extensión o no – ursuleacv

+2

'sudo pecl install timezonedb' –

Respuesta

4

hasta donde yo sé, el Timezone DB (TDB) se distribuye dentro de PHP. Debido a eso, la base de datos de la zona horaria se vuelve obsoleta después de un tiempo y debes actualizar PHP o la TDB para reflejar los cambios en TDB.

Hay una extensión PECL que lanza nuevos paquetes de TDB que puede descargar e instalar y usarlos en sus antiguas instalaciones de PHP.

No tengo conocimiento de que haya una manera de actualizar TDB directamente en PHP. La extensión PECL fue creada para atacar este problema.

+0

Hola dwich, ¿estás indicando que si actualizamos el PHP también debería funcionar? Hubiera pensado que las actualizaciones de PHP son pocas y están muy alejadas ... – tzmatt7447

+0

En cuanto a PECL - No estoy muy familiarizado con el concepto - ¿es esto una parte incorporada estándar de PHP ahora? – tzmatt7447

+1

@ tzmatt7447: Si actualiza PHP, podría contener una versión más reciente de TDB, pero no puede estar seguro de que sea la más reciente. También puede haber nuevas versiones de TDB entre lanzamientos regulares de PHP, así que de nuevo, no puede estar seguro si actualiza PHP, obtendrá la TDB más nueva y PHP no se lanzará solo porque se actualizó TDB. – dwich

2

Es mejor actualizar su versión de PHP (especialmente si desea actualizarla en una máquina con Windows, de lo contrario debe compilar la extensión usted mismo) porque, por lo que recuerdo, la extensión no es Windows- Listo solo para Unix/Linux, así que si quieres hacerlo en Windows, tendrás que compilarlo usando el compilador VC6 O VC9.

Por lo tanto, si puede actualizar su versión de PHP que sería la solución más rápida (al menos para mí), PHP puede no tener la última información de la zona horaria pero tuve que resolver un problema con la zona horaria db y fue corregido en la versión posterior de PHP que tuve. Si lo hace para unix/linux, pruebe la extensión PECL, creo que puede ser más fácil & más rápido que usted.

+3

Desde la versión 2014.10, la extensión se puede descargar como dll para Windows, consulte https://pecl.php.net/package/timezonedb – ursuleacv

2

La extensión PECL es literalmente la zona horaria DB. Cada vez que se lanza una nueva versión del DB desde here, la extensión se vuelve a compilar con el DB de la zona horaria actualizada.

Por lo tanto, en realidad sobrescribiría la antigua extensión con la versión recién recompilada y reiniciaría su servidor web; asumiendo que PHP se está utilizando como un módulo.

0

hacer una actualización completa zona horaria (Tuvimos problemas con la zona horaria incorrecta Rusia/Moscú):

#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 
Cuestiones relacionadas