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

122,049

Solution 1

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

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"

  2. In my case I ended up with : Configuration File (php.ini) Path => /etc

  3. 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

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

    sudo cp php.ini.default php.ini

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

    sudo chmod ug+w php.ini

    sudo chgrp staff php.ini

  6. 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

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

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

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

Share:
122,049

Related videos on Youtube

Milos Cuculovic
Author by

Milos Cuculovic

Masters degree in Embedded and comunicant systems.

Updated on July 05, 2022

Comments

  • Milos Cuculovic
    Milos Cuculovic almost 2 years

    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.

    • sas
      sas over 10 years
      can you confirm me the full path of the php.ini that you have changed
    • sas
      sas over 10 years
      if you get this warning in symfony console then you also need to change at cli/php.ini
  • Milos Cuculovic
    Milos Cuculovic over 10 years
    Thank you, but already checked: Loaded Configuration File => /usr/local/php5.5.7/lib/php.ini
  • sas
    sas over 10 years
    there should be another configuration for cli, did you check that also?
  • Milos Cuculovic
    Milos Cuculovic over 10 years
    Hm, and how to find this second one?
  • sas
    sas over 10 years
    may I know how you have installed php5.5.7? because normally it should have been placed at etc/php5 anyway you can fix this by set default timezone at karnel class constructor.
  • Milos Cuculovic
    Milos Cuculovic over 10 years
    I installed it from source with ./configure --prefix=/usr/local/php5.5.7
  • Milos Cuculovic
    Milos Cuculovic over 10 years
    Thank you for your answer. I think I know where the problem is. When restarting the php-fpm, I am restarting the old one, do you know how to restart the new php5.5.7 I installed ?
  • sas
    sas over 10 years
    restarting your apache2 will suppose to restart php as well
  • ahmed hamdy
    ahmed hamdy about 10 years
    i had the same problem and your another solution works with me
  • Stephen Tetreault
    Stephen Tetreault about 9 years
    You just saved me a serious headache. Thank you, friend!
  • Admin
    Admin over 8 years
    perfect, saved me lot of time!
  • dericcain
    dericcain over 8 years
    Thank you for this answer. It solved my issue in version 3
  • kevnk
    kevnk about 8 years
    This worked great! It may be valuable to add a link to valid timezone values: php.net/manual/en/timezones.php
  • sas
    sas about 8 years
    Thanks, I have added
  • Jan
    Jan almost 8 years
    Technically this should be the correct answer as it actually resolves the problem long term.
  • user276648
    user276648 over 7 years
    init is deprecated since version 2.3, to be removed in 3.0. Move your logic in the constructor instead like @Krzysztof Bociurko or the updated accepted answer.
  • Ricardo Martínez
    Ricardo Martínez almost 7 years
    Hi! in my case i use XAMPP on MacOS, then i do php -i and output this: Configuration File (php.ini) Path => /etc Loaded Configuration File => (none) And that's was the problem, in /etc there's no php.ini file, i've created with sudo nano /etc/php.ini and add this entry [Date] ; Defines the default timezone used by the date functions ; php.net/date.timezone date.timezone=Europe/Madrid and start working, i've tried the @sas solution and work like a charm too.
  • sas
    sas almost 7 years
    I exactly don't where is the bin/php of xampp on mac. please try to find it, should be in the directory of xampp. e.g. run DIR_XAMPP/bin/php -i
  • vp_arth
    vp_arth over 6 years
    php --ini is a nice shortcut