PHP生成的时区列表不完整

PHP生成的时区列表不完整,php,timezone,region,Php,Timezone,Region,我已尝试使用以下代码生成中指定的完整时区集(UTC除外): $zones = timezone_identifiers_list(); print_r($zones); 但是这个列表似乎跳过了50个地区,例如:太平洋/萨摩亚(与之相比) 我们做错了什么 phpinfo()显示: 编辑#2 在我的服务器上测试了这个。没问题。也许这是一个与服务器相关的问题 输出: 源代码: <?php foreach(DateTimeZone::listIdentifiers() as $zone)

我已尝试使用以下代码生成中指定的完整时区集(UTC除外):

$zones = timezone_identifiers_list();

print_r($zones);
但是这个列表似乎跳过了50个地区,例如:太平洋/萨摩亚(与之相比)

我们做错了什么

phpinfo()显示:


编辑#2


在我的服务器上测试了这个。没问题。也许这是一个与服务器相关的问题

输出:

源代码:

<?php

foreach(DateTimeZone::listIdentifiers() as $zone) {

    echo $zone.'<br/>';

}   

?>

最好的,
Christian

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

请尝试按照页面底部的链接进行操作:

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



在注释后编辑:要更新您的时区数据库,因为您在Linux系统上,您可以使用
pecl
命令(我刚刚在我的Ubuntu机器上尝试过这个):

这将下载并编译新版本

然后,如果启用新的
timezonedb
扩展,您的PHP应该使用最新的数据库:

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
如果我尝试不启用该新扩展,我会得到与您以前相同的结果:

php -i | grep Timezone
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
如前所述,PHP时区数据库是一个PECL包。因为您使用的是Linux主机,所以不应该有任何问题:

pecl install timezonedb
。。。或:

pecl upgrade timezonedb
更新: 我找到了一个与CentOS特定说明的链接:

您还可以执行以下搜索:

C:\>pecl search timezonedb
Retrieving data...0%
MATCHED PACKAGES, CHANNEL PECL.PHP.NET:
=======================================
PACKAGE    STABLE/(LATEST) LOCAL
timezonedb 2011.5 (stable)       Timezone Database to be used with PHP's date and time functions

尝试调用时区\标识符\列表(带有\ BC的DateTimeZone::ALL\ u)。这对我很管用。(从本文中找到此解决方案:)

什么操作系统和PHP版本?此外,可以在phpinfo()的输出(“日期”部分)找到正在使用的DB版本。@matt74tm-Unix
tzdata
!=PHP
timezonedb
@Álvaro@Pascal-我已经通过yum安装tzdata安装了时区数据库,版本是rpm-q的输出tzdata@matt我已经用一些额外的信息更新了我的答案;希望这些帮助:-)@Pascal-谢谢!我已经取得了一些进展:php-i | grep时区“Olson”时区数据库版本=>2011.5时区数据库=>external Alternative时区数据库=>enabled时区数据库版本=>2011.5但是,它仍然没有输出Pacific/Samoa!!嗯-不要给我萨摩亚…:)在您的服务器上还是在我的服务器上?这很重要,因为我们可以排除php环境。仅供参考:我正在这台机器上运行MacOS X 10.6.7。我做到了:pecl升级时区B;在/etc/php.ini的末尾添加了extension=timezonedb.so;重新启动apache,但outputie没有变化,我仍然没有看到太平洋/萨摩亚!
pecl install timezonedb
pecl upgrade timezonedb
C:\>pecl search timezonedb
Retrieving data...0%
MATCHED PACKAGES, CHANNEL PECL.PHP.NET:
=======================================
PACKAGE    STABLE/(LATEST) LOCAL
timezonedb 2011.5 (stable)       Timezone Database to be used with PHP's date and time functions