我在Cake上遇到了一个奇怪的问题。我住在德国。当我添加帖子时,"已创建"数据库字段中的时间是6小时后。例如,下午6点创建的帖子在数据库中显示为上午12点创建。我使用托管服务器,并联系了将php.ini设置为正确时区欧洲/柏林的公司。当我请求服务器php.ini时,它会正确显示时区"欧洲/柏林"。但是当我运行代码时
$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;
在CakePHP中,它显示
The current server timezone is: America/New_York
我已经试着在core.php中设置了:
date_default_timezone_set('Europe/Berlin');
但这根本没有任何效果。希望有人知道该怎么做。
编辑1:
在请求支持运行"locale-a"后,出现了以下内容:
# locale -a
C
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
deutsch
en_US.utf8
german
POSIX
我认为服务器端的一切都很好,错误只是小菜一碟。但我不知道下一步该怎么办?也许有人可以帮忙。提前谢谢。
**编辑2:**
经过仔细查看,我在Usermanagement插件的bootstrap.php中发现了错误,该插件将时区设置为UTC。所以现在一切都很好。无论如何,谢谢你的帮助。
编辑:
如果做下面的答案没有效果(根据OP(,可能是这个问题:
很可能是上没有安装德语区域设置服务器上运行脚本-您是否有shell访问服务器然后尝试
locale-
查看安装了哪些区域设置。也看看这里是依赖setlocale和正在安装的locale是否可行?
TLDR:
你有一个正确的想法——把它放在你的Config/bootstrap.php
中。而不是Config/core.php.
更多详细信息:
这可能与这个问题相同。答案是:
将其放入Config/bootstrap.hp:
date_default_timezone_set('UTC'(//或者不管你的时区是
它只是基于服务器时间,实际上与CakePHP-所以只需使用PHP更改默认时区,您就应该很高兴去。"created和modified将基于指定的时区。
重申一下,"created
"one_answers"modified
"字段基于服务器,与CakePHP没有太大关系(听起来您已经正确地假设了这一点(。
CakeTime::convert((是一个相关的项目(仅供参考(,但在这种情况下,它不是您想要的。
在app_controller中设置,而不是在code.php 中
问题已解决。问题出现在一个插件中,该插件也有config.php。在那里,Cake配置被覆盖了。现在一切都好了。