由于最近改变俄罗斯时区的法律,我在更新phpbb论坛的时区时遇到了麻烦。由于我更像是一个php程序员而不是nix管理员,所以这一切对我来说有点痛苦,所以任何建议都非常感谢。
长话短说,执行 shell 命令 'date' 返回:
Fri Nov 23 11:20:39 MSK 2012
这很好。
但是,在 PHP 中,date('Y-m-d H:i:s',time()) 返回:
2012-11-23 10:20:39
这太早了一个小时了。
PHP date_default_timezone_get() 返回:
Europe/Moscow
我认为PHP有自己的(过时的)时区数据库,所以我继续执行:
pecl install timezonedb
相应地修改了PHP.ini(向 timezonedb.so 添加路径),重新启动服务器并检查
php --ri timezonedb
它回应得很好
Alternative Timezone Database => enabled
Timezone Database Version => 2012.10
但是时间问题根本没有解决,当我问phpinfo()时,它会响应:
date
date/time support enabled
"Olson" Timezone Database Version 2010.9
Timezone Database internal
Default timezone Europe/Moscow
所以命令行说 timezonedb 版本是 2012.10,但 PHP 仍然使用 2012.9?我根本不明白这个=(
通过完全重新启动服务器来解决。不知何故,尽管多次重新启动 nginx,PHP 仍在运行......