Symfony2 和 date_default_timezone_get() - 依赖系统的时区设置是不安全的

2022-08-30 08:25:37

我有一个Symfony2项目。我今天将我的php更新到5.5.7,从那时起,我得到了

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

我在php中设置了默认时区.ini

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

为了确保这是好的php.ini,我正在检查

phpinfo();

我到达那里的路径是我正在修改的路径:

 /usr/local/php5.5.7/lib 

但在那里,我看到

Default timezone    UTC 

这很奇怪。

任何想法?谢谢。


答案 1

也许您正在尝试在Apache中设置它,但是您的CLI(命令行界面)不好。php.iniphp.ini

使用以下命令查找文件:php.ini

php -i | grep php.ini

然后搜索并将其设置为 .所有有效时区都可以在这里找到 http://php.net/manual/en/timezones.phpdate.timezone"Europe/Amsterdam"

另一种方法(如果另一种方法不起作用),搜索文件 ,该文件应位于Symfony项目目录的文件夹下。覆盖类中的以下函数:AppKernel.phpapp__constructAppKernel

<?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);
    }

}

答案 2

找到了类似的方法来解决这个问题(至少对我来说是这样)。

  1. 首先检查 的位置:CLI php.ini

    php -i | grep "php.ini"

  2. 在我的情况下,我最终得到了:配置文件(php.ini)路径=> /etc

  3. 然后一路回到,在我的情况下做php.ini没有出现,只有一个php.ini.defaultcd ..cd/etcls

  4. 现在,复制名为 php.ini.default 的文件.ini:

    sudo cp php.ini.default php.ini

  5. 要进行编辑,请更改文件的权限:

    sudo chmod ug+w php.ini

    sudo chgrp staff php.ini

  6. 打开目录并编辑 php.ini 文件:

    open .

    提示: 如果您由于某些权限问题而无法编辑php.ini请复制“php.ini.default”并将其粘贴到桌面上并将其重命名为“php.ini”,然后打开它并按照步骤7进行编辑。然后将其移动(复制+粘贴)到 /etc 文件夹中。问题将得到解决。

  7. 搜索 [日期] 并确保以下行的格式正确:

    date.timezone = "Europe/Amsterdam"

我希望这可以帮助你。


推荐