蛋糕PHP时区错了

时间:2013-02-25 17:58:32

标签: cakephp timezone

我和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。所以现在一切正常。无论如何,谢谢你的帮助。

3 个答案:

答案 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被覆盖了。现在一切都很好。