phpinfo()显示我们的系统使用“”Olson“Timezone Database Version 2010.3”。我认为现在已经过时了,但无法找到可以确认的权威位置。
(a)我可以更新整个PHP的时区信息吗? (b)如果是,我该如何更新?我在http://www.electrictoolbox.com/correct-php-timezone/看到了说明,在安装适当的模块后,它说我必须:
You should add "extension=timezonedb.so" to php.ini
我们需要这样做吗? PHP不应该自动使用正确的文件吗?
答案 0 :(得分:4)
据我所知,Timezone DB(TDB)是在PHP本身内发布的。因此,时区DB在一段时间后就会过时,您应该更新PHP或TDB以反映TDB的变化。
有一个PECL扩展,它可以发布新的TDB包,您可以在旧的PHP安装中下载和安装它们。
我不知道有一种方法可以直接在PHP中更新TDB。创建PECL扩展是为了解决这个问题。
答案 1 :(得分:2)
最好只更新你的PHP版本(特别是,如果你想在Windows机器上更新它,否则你必须自己编译扩展)因为我记得扩展不是Windows-Ready只有unix / linux - 所以如果你想在windows上做,你必须自己使用VC6或VC9编译器编译它。
所以,如果你可以更新你的PHP版本,这将是最快的解决方案(它至少对我来说),当然PHP可能没有最新的时区数据库信息,但我必须解决时区数据库的问题,它是修复了我以后的PHP版本。 如果你正在为unix / linux做这件事你也可以尝试PECL扩展,我认为这可能更容易&那么你会更快。
答案 2 :(得分:2)
PECL扩展实际上是时区DB。每次从here发布新版本的数据库时,都会使用更新的时区数据库重新编译扩展。
因此,您实际上会使用新重新编译的版本覆盖旧扩展并重新启动Web服务器;假设PHP被用作模块。
答案 3 :(得分:0)
要进行完整的时区更新(我们遇到俄罗斯/莫斯科时区不正确的问题):
#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