10

phpinfo() 显示我们的系统正在使用“Olson”时区数据库版本 2010.3。我认为现在已经过时了,但找不到可以确认的权威位置。

(a) 我可以整体更新 PHP 的时区信息吗?(b) 如果是这样,我该如何更新?我在http://www.electrictoolbox.com/correct-php-timezone/看到了说明,它说,在安装适当的模块后,它说我必须:

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

我们需要这样做吗?PHP不应该自动使用正确的文件吗?

4

4 回答 4

4

据我所知,时区数据库(TDB)分布在 PHP 本身中。因此,时区数据库在一段时间后会过时,您应该更新 PHP 或 TDB 以反映 TDB 中的更改。

有一个 PECL 扩展可以发布新的 TDB 包,您可以下载并安装它们,并在旧的 PHP 安装中使用它们。

我不知道有一种方法可以直接在 PHP 中更新 TDB。创建 PECL 扩展以解决此问题。

于 2010-08-25T13:31:40.153 回答
2

最好只更新您的 PHP 版本(特别是,如果您想在 Windows 机器上更新它,否则您必须自己编译扩展),因为据我所知,该扩展不是仅适用于 Windows 的 unix/ linux - 因此,如果您想在 Windows 上执行此操作,则必须使用 VC6 或 VC9 编译器自己编译)。

因此,如果您可以更新您的 PHP 版本,这将是最快的解决方案(这对我来说至少是这样),当然 PHP 可能没有最新的时区数据库信息,但我必须解决时区数据库的问题,它已在我拥有的更高版本的PHP。如果你是为 unix/linux 做的,你不妨试试 PECL 扩展,我认为这对你来说可能更容易和更快。

于 2011-04-29T15:50:10.197 回答
2

PECL 扩展实际上是时区数据库。每次从这里发布新版本的数据库时,都会使用更新的时区数据库重新编译扩展。

因此,您实际上会用新重新编译的版本覆盖旧扩展并重新启动您的 Web 服务器;假设 PHP 被用作模块。

于 2015-01-06T21:56:58.640 回答
1

要进行完整的时区更新(我们遇到了不正确的俄罗斯/莫斯科时区问题):

#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
于 2017-10-05T09:26:39.873 回答