我正在开发一个大量使用时区的网站,这些时区需要处于可用的绝对最新tz信息的最前沿(我已通过tz mailing list获得)。我不知道的是如何在我的开发机器和我的Web主机上运行PHP安装,以使用更新的tz数据而不是已经存在的旧数据。 这并不像升级PHP那么简单,,因为即使是最新版本的PHP也不一定会在任何给定时间拥有绝对最新的tz数据。
有人指出pecl
中的timezonedb package会让我看到最新的正式版本,但是如果我需要更进一步来达到“前沿”的话可能还没有正式发布的更新?我很确定较新的tz数据必须使用zic
(在tzcode中分发)进行编译,并将结果二进制文件赋予pecl
。我真的不知道所有这一切,所以我们将非常感谢各个步骤的见解/链接。
如何在(1) XAMPP开发机器和/或(2)上升级本地由一个PHP实例使用的Olson数据库 一个典型的共享托管服务...... 尽可能少的箍和管理障碍?是否有任何特定的共享托管环境可能会让人更加难以理解?拥有多个数据副本是否可行,以便在某种程度上搞砸了它们时可以轻易撤消更改?
由于变更有时并未及时正式发布以使其生效,我正在寻找一种能够自行任意改变这种变化的方法。我也有兴趣探索从“快速/轻松”到“严谨/最佳”的一系列可能解决方案的潜在权衡。
答案 0 :(得分:3)
上面的评论提供了比这更好的答案 - 查看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
文件进行搜索。
然而,谷歌搜索了&#39; php timelib&#39;发现:
这几乎肯定是替代品。