尽管时区有效,但设置默认时区无效


Setting default timezone does not work despite timezone being valid

我只是在做phpinfo()

警告:phpinfo():依赖系统的时区设置是不安全的。需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了其中任何一种方法,但仍然收到此警告,则很可能是您拼错了时区标识符。我们在第8行的/myadmin/i.php中选择了"欧洲/赫尔辛基"作为"EET/2.0/no DST"

这是i.php:

<?php
//echo date_default_timezone_get();
date_default_timezone_set("Europe/Kiev");
//echo date("l");
phpinfo();
?>

正如你所看到的,当我做date_default_timezone_set("欧洲/基辅")时,我得到:

注意:date_default_timezone_set():时区ID"欧洲/基辅"在第4行上的/myadmin/i.php中无效

我确信我在这里使用了有效的时区字符串,我确实设置了:

date.timezone=欧洲/基辅

在php.ini文件中。

环境:CentOS 6,nginx/1.1.11,PHP 5.3.8(fpm-fcgi)

我真的不明白这是怎么回事。非常感谢。

感谢大家的评论,我解决了我的问题。我所做的,在控制台:

#yum install php-pear
#pecl install timezonedb

它需要c编译器:

configure: error: no acceptable C compiler found in $PATH

所以我做了:

#yum install gcc

此外,如果您得到关于make命令的错误,只需运行

#yum install make

最后,再试一次:

#pecl install timezonedb

它在最后显示:

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

我在/etc/php.ini中添加了"extension=timezonedb.so",并重新启动了php-fpm:

#/etc/init.d/php-fpm restart

要扩展futureboxlab的解决方案,如果您没有安装make,您可能会遇到另一个关于"make"命令的错误。在这种情况下,您只需要运行

#yum install make

然后,再次(第三次是魅力)

#pecl install timezonedb