PHP生成的时区列表不完整

sil*_*npi 3 php timezone region

我已经尝试使用以下代码生成http://php.net/manual/en/timezones.php(UTC除外)中指定的完整时区.

$zones = timezone_identifiers_list();

print_r($zones);
Run Code Online (Sandbox Code Playgroud)

但是这个列表似乎跳过了大约50个地区,例如:太平洋/萨摩亚(与http://php.net/manual/en/timezones.php相比)

我们做错了什么?

phpinfo()显示:

PHP Version 5.3.4
Apache Version  Apache/2.2.3 (CentOS) 

$ uname -r
2.6.18-028stab070.14
Run Code Online (Sandbox Code Playgroud)

编辑#2

date
date/time support   enabled
"Olson" Timezone Database Version   0.system
Timezone Database   internal
Default timezone    UTC 
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 6

您的时区数据库可能不是最新的.

尝试按照" 支持的时区列表"页面底部的链接进行操作:

可以通过PECL的» timezonedb安装最新版本的时区数据库 .



在评论后编辑:要更新您的时区数据库,就像在Linux系统上一样,您可以使用该pecl命令(我刚刚在我的Ubuntu机器上尝试过这个):

pecl upgrade timezonedb
Run Code Online (Sandbox Code Playgroud)

这将下载新版本并进行编译.

然后,如果启用新timezonedb扩展,则PHP应使用uptodate数据库:

php -dextension=timezonedb.so -i | grep Timezone
"Olson" Timezone Database Version => 2011.5
Timezone Database => external
Alternative Timezone Database => enabled
Timezone Database Version => 2011.5
Run Code Online (Sandbox Code Playgroud)

如果我尝试没有启用新的扩展,我会得到你以前的那种东西:

php -i | grep Timezone
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Run Code Online (Sandbox Code Playgroud)