我和Cake有一个奇怪的问题。我住在德国。当我添加帖子时,“创建的”数据库字段中的时间是6个小时。例如。下午6点创建的帖子显示在数据库中,创建时间为上午12点。 我使用托管服务器,我联系了将php.ini设置为正确的时区Europe / Berlin的公司。当我请求服务器php.ini时,它正确显示时区“Europe / Berlin”。但是当我运行代码时
$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-plugin的bootstrap.php中发现了错误,该错误将时区设置为UTC。所以现在一切正常。无论如何,谢谢你的帮助。
答案 0 :(得分:5)
修改强>
如果以下答案无效(每个OP),则可能是this issue:
很可能是德语语言环境没有安装在 服务器运行脚本 - 你有shell访问权限吗? 服务器?然后尝试
locale -a
查看安装了哪些区域设置。还看看这里 是否可以依赖setlocale,并依赖于安装的语言环境?
<强> TLDR:强>
你有正确的想法 - 只需将它放在你的Config/bootstrap.php
中。而不是你的Config/core.php.
更多细节:
这可能与this question相同。答案是:
将它放在Config / bootstrap.php中:
date_default_timezone_set( 'UTC'); //或者你的时区是什么
它只是基于服务器时间而且与真正无关 CakePHP - 所以只需用PHP更改默认时区,你应该这样做 很高兴去。 'created'和'modified'将基于指定的 时区。
重申一下,“created
”和“modified
”字段基于服务器而且与CakePHP没什么关系(听起来你已经假设正确了)。
一个相关的项目(只是读起来的fyi)是CakeTime::convert(),但在这种情况下,不是你想要的。
答案 1 :(得分:0)
在app_controller中设置,而不是在code.php
中答案 2 :(得分:0)
问题解决了。问题出在一个插件中,它也有一个config.php。那里的Cake-config被覆盖了。现在一切都很好。