16
votes

on server i have php 5.3.2, and cakephp 1.3.

when i run cakephp application, it gives me following errors:

Warning (2): strtotime() [http://php.net/function.strtotime]: It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead [ROOT/cakephp/cake/libs/cache.php, line 570]

Also, I'm getting some more errros:

Notice: Trying to get property of non-object in /htdocs/cakephp/cake/libs/cache/file.php on line 248 Fatal error: Call to a member function cd() on a non-object in /htdocs/cakephp/cake/libs/cache/file.php on line 248

Timezone in php.ini is defined as Europe/London

I'm always getting that error, despite I define or not date_default_timezone_set('UTC'), or Europe/London, or whatever...

really frustrating......... please help...

UPDATE: something is wrong with my installation of php... if i run

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

... it gives me blank screen. no result...

is there maybe a problem?

5
Have you tried declaring the timezone in your code? Perhaps in your app_controller's beforeFilter() ?David Yell
looks like i have some problem with installation of php... please, take a look at updated part of my question.user198003
Note: The php-cli's php.ini file is different then apache2's php.ini file. I suggest symbolic linking one to another to keep them in sync and avoid confusion!recursion.ninja

5 Answers

26
votes

To handle the first warning you need to uncomment the line date_default_timezone_set('UTC'); in /app/config/core.php. You can replace UTC with your timezone as Leo suggested.

7
votes

As Leo Said, is an issue with PHP 5.3. The best solution is to modify your web server php.ini and set

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

Or if you can't modify web server php.ini you can add this options to root .htaccess file on your site:

php_flag date.timezone = "Europe/Rome"
4
votes

I had the exact same problem and Googling led me to this post.

I fixed the problem by adding the line date_default_timezone_set("America/Anchorage"); to the top of [cake base directory]/libs/cache.php

You probably want to replace America/Anchorage with your timezone.

2
votes

I had this error for a while since the hosting co. upgraded to 5.3 too

In the /app/config/config.php, around line 244, there's a note about un-commenting the next line when running on 5.3

I just changed the next line to:

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)

You could put that line in bootstrap.php, but you might get this error still, config.php is loaded first

0
votes

I ran into this when using cakeshell to run command line cron scripts. After much hassle I figured out that in addition to bancer's solution above I needed import core.php into my php shell scripts as such:

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

    //run controllers and actions that cause error here

}

Adding 'Core' to App::import() solved it for me.