Symfony2 and date_default_timezone_get() - It is not safe to rely on the system's timezone settings

PhpSymfonyTimezone

Php Problem Overview


I have a Symfony2 project. I updated my php to 5.5.7 today and since then, I am getting the

Warning: date_default_timezone_get(): 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 the timezone 'UTC' for now, but please set date.timezone to select your timezone. in...

I setup the default timezone in my php.ini

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

To be sure that this is the good php.ini, I was checking with

phpinfo();

And the path I ma getting there is the one I am modifying:

 /usr/local/php5.5.7/lib 

But in there, I see the

Default timezone 	UTC 

Which is strange.

any idea? Thank you.

Php Solutions


Solution 1 - Php

Maybe you are trying to set it in Apache's php.ini, but your CLI (Command Line Interface) php.ini is not good.

Find your php.ini file with the following command:

php -i | grep php.ini

And then search for date.timezone and set it to "Europe/Amsterdam". all valid timezone will be found here http://php.net/manual/en/timezones.php

Another way (if the other does not work), search for the file AppKernel.php, which should be under the folder app of your Symfony project directory. Overwrite the __construct function below in the class AppKernel:

<?php     
 
class AppKernel extends Kernel
{
    // Other methods and variables


    // Append this init function below

    public function __construct($environment, $debug)
    {
        date_default_timezone_set( 'Europe/Paris' );
        parent::__construct($environment, $debug);
    }

}

Solution 2 - Php

Found a similar way to fix this issue (at least it did for me).

  1. First check where the CLI php.ini is located:
`php -i | grep "php.ini"`
  1. In my case I ended up with : Configuration File (php.ini) Path => /etc

  2. Then cd .. all the way back and cd into /etc, do ls in my case php.ini didn't show up, only a php.ini.default

  3. Now, copy the php.ini.default file named as php.ini:

    sudo cp php.ini.default php.ini

  4. In order to edit, change the permissions of the file:

    sudo chmod ug+w php.ini

    sudo chgrp staff php.ini

  5. Open directory and edit the php.ini file:

open .

_Tip: If you are not able to edit the php.ini due to some permissions issue then copy 'php.ini.default' and paste it on your desktop and rename it to 'php.ini' then open it and edit it following step 7. Then move (copy+paste) it in /etc folder. Issue will be resolved._

7. Search for [Date] and make sure the following line is in the correct format:

`date.timezone = "Europe/Amsterdam"`

I hope this could help you out.

Solution 3 - Php

The current accepted answer by crack is deprecated in Symfony 2.3 and will be removed by 3.0. It should be moved to the constructor:

public function __construct($environment, $debug) {
    date_default_timezone_set('Europe/Warsaw');
	parent::__construct($environment, $debug);
}

Solution 4 - Php

Since PHP 5.5, there is a separate php.ini file for CLI interface. If You use symfony console from command line, then this specific php.ini is used.

In Ubuntu 13.10 check file: > /etc/php5/cli/php.ini

Solution 5 - Php

The problem appear when we are using PHP 5.1 on Redhat or Cent OS

PHP 5.1 on RHEL/CentOS doesn't support the timezone functions

Solution 6 - Php

Following up on sas's answer, PHP 5.4, Symfony 2.8, I had to use

ini_set('date.timezone','<whatever timezone string>');

instead of date_default_timezone_set. I also added a call to ini_set to the top of a custom web/config.php to get that check to succeed.

Solution 7 - Php

add this code to Your AppKernel Class:

public function init()
{
    date_default_timezone_set('Asia/Tehran');
    parent::init();
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMilos CuculovicView Question on Stackoverflow
Solution 1 - PhpsasView Answer on Stackoverflow
Solution 2 - PhpPeterView Answer on Stackoverflow
Solution 3 - PhpKrzysztof BociurkoView Answer on Stackoverflow
Solution 4 - PhpValentasView Answer on Stackoverflow
Solution 5 - PhpbilelovitchView Answer on Stackoverflow
Solution 6 - PhpcxwView Answer on Stackoverflow
Solution 7 - PhpSifb71View Answer on Stackoverflow