时区和Cakephp 1.3和PHP 5.3.2的更多问题

时间:2010-07-30 09:57:54

标签: cakephp datetime timezone php

服务器上的

我有php 5.3.2和cakephp 1.3。

当我运行cakephp应用程序时,它会给我以下错误:

  

警告(2):strtotime()[http://php.net/function.strtotime]:依靠系统的时区设置是不安全的。您必需使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们选择“欧洲/柏林”代替“CEST / 2.0 / DST”而不是[ROOT / cakephp / cake / libs / cache.php,第570行]

另外,我还有一些错误:

  

注意:尝试在第248行的/htdocs/cakephp/cake/libs/cache/file.php中获取非对象的属性致命错误:在/ htdocs中的非对象上调用成员函数cd()第248行/cakephp/cake/libs/cache/file.php

php.ini中的时区定义为欧洲/伦敦

我总是得到那个错误,尽管我定义的不是date_default_timezone_set('UTC'),还是欧洲/伦敦,或者其他......

非常令人沮丧.........请帮忙...

更新:我的php安装有问题...如果我运行

<?php echo date('Y'); ?>

...它给我空白屏幕。没结果......

可能有问题吗?

5 个答案:

答案 0 :(得分:26)

要处理第一个警告,您需要取消注释/app/config/core.php中的行date_default_timezone_set('UTC');。您可以用Leo建议的时区替换UTC

答案 1 :(得分:7)

正如Leo Said所说,PHP 5.3存在问题。最好的解决方案是修改您的Web服务器php.ini并设置

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Rome"

或者,如果您无法修改web服务器php.ini,您可以将此选项添加到您网站上的root .htaccess文件中:

php_flag date.timezone = "Europe/Rome"

答案 2 :(得分:4)

我有完全相同的问题,谷歌搜索引导我到这篇文章。

我通过将行date_default_timezone_set("America/Anchorage");添加到 [cake base directory] ​​/libs/cache.php 的顶部来解决问题

您可能希望将 America / Anchorage 替换为您的时区。

答案 3 :(得分:2)

自托管公司以来,我有一段时间没有这个错误。也升级到5.3

在第244行的/app/config/config.php中,有一条关于在5.3上运行时取消注释下一行的注释

我刚刚将下一行改为:

date_default_timezone_set('America/Toronto'); // your favourite time-zone here - and don't get me started about why Toronto is U.S. city (joking)

您可以将该行放在bootstrap.php中,但是您可能仍会收到此错误,首先加载config.php

答案 4 :(得分:0)

当使用cakehell运行命令行cron脚本时,我遇到了这个问题。经过多次麻烦后我发现除了上面的bancer解决方案之外,我还需要将core.php导入到我的php shell脚本中:

function main() {
    App::import('Controller', 'Core');

    //run controllers and actions that cause error here

}

添加 App :: import()的“核心”为我解决了这个问题。