3

我对蛋糕有一个奇怪的问题。我住在德国。当我添加帖子时,“创建”数据库字段中的时间是 6 小时前。例如,下午 6 点创建的帖子在上午 12 点创建的数据库中显示。我使用托管服务器并联系了将 php.ini 设置为正确时区 Europe/Berlin 的公司。当我请求服务器 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-plugin 的 bootstrap.php 中发现了错误,该错误将那里的时区设置为 UTC。所以现在一切正常。还是要谢谢你的帮助。

4

3 回答 3

5

编辑:

如果执行以下答案没有效果(根据 OP),则可能是这个问题

您运行脚本的服务器上很可能未安装德语语言环境 - 您是否具有对服务器的 shell 访问权限?然后尝试

语言环境-a

查看安装了哪些语言环境。也看看这里依赖 setlocale 并依赖安装的语言环境是否可行?


TLDR:

你的想法是对的——只要把它放在你的Config/bootstrap.php. 而不是你的Config/core.php.

更多详情:

这很可能与这个问题相同。它的答案:

把它放在你的 Config/bootstrap.php 中:

date_default_timezone_set('UTC'); //或者无论你的时区是什么

它只是基于服务器时间,实际上与 CakePHP 无关 - 所以只需用 PHP 更改默认时区,就可以了。'created' 和 'modified' 将基于指定的时区。

重申一下,“ created”和“ modified”字段是基于服务器的,实际上与 CakePHP 没有太大关系(听起来您已经正确假设了)。

一个相关的项目(仅供参考)是CakeTime::convert(),但在这种情况下,这不是你想要的。

于 2013-02-25T18:01:30.677 回答
0

在 app_controller 中设置,而不是在 code.php 中

于 2013-02-25T18:01:48.217 回答
0

问题解决了。问题出在一个也有 config.php 的插件中。Cake-config 在那里被覆盖。现在一切都很好。

于 2013-04-20T12:46:44.587 回答