我在一个大量使用时区的网站上工作,该网站需要处于绝对最新的可用tz信息的前沿(我已经通过tz邮件列表获得了这些信息)。我不知道的是如何让PHP安装在我的开发机器和web主机上运行,以使用更新的tz数据,而不是已经在上面的旧数据这并不像升级PHP那么简单,因为即使是最新版本的PHP也不一定在任何给定时间都有绝对最新的tz数据。
有人指出,pecl
中的timezonedb软件包将使我了解该软件包的最新官方发布,但如果我需要进一步了解可能尚未正式发布的更新的"前沿",该怎么办?我非常确信,更新的tz数据必须使用zic
(分布在tzcode中)进行编译,并将生成的二进制文件提供给pecl
。我真的不知道这需要什么,所以我们将不胜感激个别步骤的洞察力/链接。
如何在(1)XAMPP开发机和/或上升级本机使用的PHP实例Olson数据库?(2)典型的共享托管服务同时跳过尽可能少的障碍和管理障碍是否有任何共享托管环境可能会使您更难了解的细节?有多个数据副本存在,这样如果有人搞砸了,更改就可以很容易地撤销,这可行吗?
由于更改有时没有及时正式发布以使其生效,我正在专门寻找一种能够自行任意进行这些更改的方法。我还对探索从"快速/简单"到"严格/最佳"的一系列可能解决方案的潜在权衡感兴趣。
确定答案
上面的评论给出了一个比这更好的答案——看看PECL包timezonedb
。
我已将其转换为社区Wiki。
调查
来自诸如php-5.3.8.tar.bz2
之类的包的分布式源包含ext/date/lib
目录中的Olson数据库和文件timezonedb.h
、timezonemap.h
、fallbackmap.h
的翻译。这意味着PHP开发系统中的某个地方有代码可以从Olson数据库的发布中生成这些信息,但默认情况下不会分发。此外,它并不是不言而喻地作为SVN的一部分分布的;我提取了321876版本的PHP 5.3源代码,ext/date
目录中没有任何帮助(只有生成的文件)。
因此,询问PHP维护人员如何操作可能是合适的;这当然应该是可能的,而且应该是自动化的(如果他们没有自动化,那就太傻了)。但我不清楚那些PHP维护人员之外的人能告诉我如何做到这一点
NEWS文件中的评论表明Derick Rethans可能是一个很好的联系人-他将数据库更新为Olson 2010c(2010.3)。你可以在源目录顶层的run-tests.php
文件中找到他在PHP的电子邮件地址;您可以在ext/date/lib
目录的源中找到另一个电子邮件地址。
Derick Rethans提供了用于从Olson数据库中生成文件timezonedb.h
的转换工具包:
http://svn.xdebug.org/cgi-bin/viewvc.cgi/timelib/trunk/zones/?root=php
截至2016-12-09,上面的链接是404,互联网档案馆的WayBack Machine也无能为力,因为它不允许通过robots.txt
文件进行搜索。
然而,谷歌搜索"php-timlib"发现:
- https://github.com/derickr/timelib
这几乎可以肯定是替代品。