CakePHP1.3和PHP5.3.2的时区和更多问题

CakePHP1.3和PHP5.3.2的时区和更多问题,cakephp,datetime,timezone,php,Cakephp,Datetime,Timezone,Php,在服务器上,我有PHP5.3.2和CakePHP1.3 运行cakephp应用程序时,会出现以下错误: 警告(2):strotime()[:依赖系统的时区设置是不安全的。您需要使用date.timezone设置或date\u default\u timezone\u set()函数。如果您使用了这些方法中的任何一种,但仍收到此警告,则很可能是您拼错了时区标识符。我们将“CEST/2.0/DST”改为“Europe/Berlin”[ROOT/cakephp/cake/libs/cache.php,

在服务器上,我有PHP5.3.2和CakePHP1.3

运行cakephp应用程序时,会出现以下错误:

警告(2):strotime()[:依赖系统的时区设置是不安全的。您需要使用date.timezone设置或date\u default\u timezone\u set()函数。如果您使用了这些方法中的任何一种,但仍收到此警告,则很可能是您拼错了时区标识符。我们将“CEST/2.0/DST”改为“Europe/Berlin”[ROOT/cakephp/cake/libs/cache.php,第570行]

此外,我还收到了一些错误:

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

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

我总是犯这样的错误,不管我定义与否,或者欧洲/伦敦,或者其他什么

真令人沮丧……请帮忙

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

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

…它给了我一个空白屏幕。没有结果


可能有问题吗?

要处理第一个警告,你需要取消注释/app/config/core.php中的
date\u default\u timezone\u set('UTC');
行。你可以按照Leo的建议用你的时区替换
UTC

我遇到了完全相同的问题,通过谷歌搜索我找到了这篇文章

我通过在[cake base directory]/libs/cache.php的顶部添加一行
date\u default\u timezone\u set(“America/Anchorage”);
解决了这个问题


你可能想用你的时区来取代美国/安克雷奇。

正如Leo所说,PHP5.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"

自从托管公司升级到5.3之后,我有一段时间出现了这个错误

在/app/config/config.php的第244行附近,有一个关于在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是首先加载的

我在使用cakeshell运行命令行cron脚本时遇到了此问题。经过多次讨论,我发现除了上面bancer的解决方案之外,我还需要将core.php导入我的php shell脚本中,如下所示:

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

    //run controllers and actions that cause error here

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

您是否尝试过在代码中声明时区?可能是在您的App\u控制器的beforeFilter()中?看起来我在安装php时遇到了一些问题…请看一下我问题的更新部分。注意:
php cli
php.ini
文件与
apache2
php.ini
文件不同。我建议将它们进行符号链接以保持同步并避免混淆!不幸的是,我这样做了b在我发布这个问题之前…我还尝试了几个不同的时区,每次都会出现相同的错误。另外,请检查我问题的更新部分…由于某些原因,我无法执行简单的php函数date。我认为可能有问题,我没有启用或安装,或者…?将文件更改为
。我确实设置了错误_报告(E_ALL)和我遇到的错误是:警告:date():依赖系统的时区设置是不安全的。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种,但仍收到此警告,则很可能是您拼错了时区标识符。我们在第9行的/htdocs/index.php中选择了“Europe/Berlin”作为“CEST/2.0/DST”致命错误:date():时区数据库已损坏-不应该发生这种情况!在第9行的/htdocs/index.php中,这是php错误。请尝试在(apache)init.d脚本中添加TZ=GMT。如果这样做没有帮助,请在