尽管时区有效,但设置默认时区不起作用

Den*_*nis 6 php timezone centos centos6

当我做phpinfo()时,我正在试图

警告:phpinfo():依赖系统的时区设置是不安全的.您需要使用date.timezone设置或date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们在第8行的/myadmin/i.php中选择'EET/2.0/no DST'的'Europe/Helsinki'

这是i.php:

<?php
//echo date_default_timezone_get();

date_default_timezone_set("Europe/Kiev");

//echo date("l");

phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

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

注意:date_default_timezone_set():时区ID'Europe/Kiev'在第4行的/myadmin/i.php中无效

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

date.timezone =欧洲/基辅

在php.ini文件中.

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

我真的无法理解什么是问题.谢谢.

Den*_*nis 6

感谢评论,我能够解决我的问题.我在控制台做了什么:

#yum install php-pear

#pecl install timezonedb
Run Code Online (Sandbox Code Playgroud)

它需要c编译器:

configure: error: no acceptable C compiler found in $PATH
Run Code Online (Sandbox Code Playgroud)

...所以我做了:

#yum install gcc
Run Code Online (Sandbox Code Playgroud)

此外,如果您收到有关make命令的错误,只需运行即可

#yum install make
Run Code Online (Sandbox Code Playgroud)

最后,再试一次:

#pecl install timezonedb
Run Code Online (Sandbox Code Playgroud)

...它显示在最后:

You should add "extension=timezonedb.so" to php.ini
Run Code Online (Sandbox Code Playgroud)

我将"extension = timezonedb.so"添加到/etc/php.ini,然后重新启动php-fpm:

#/etc/init.d/php-fpm restart
Run Code Online (Sandbox Code Playgroud)