【问题标题】:Warning: date_default_timezone_get() installing Symfony警告:date_default_timezone_get() 安装 Symfony
【发布时间】:2014-06-16 20:35:24
【问题描述】:

我正在尝试在 XAMPP 上安装 Symfony,但我不断收到许多错误。

[Symfony\Component\Debug\Exception\ContextErrorException]                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
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 
/Applications/XAMPP/xamppfiles/htdocs/vendor/monolog/monolog/src/Monolog/Logger.php line 233 

然后

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-
install-cmd event terminated with an exception

最后

[RuntimeException]                                                         
An error occurred when executing the "'cache:clear --no-warmup'" command.

我尝试在我的 php.ini 文件中更改 date.timezone 并在尝试安装之前在命令行中使用 date_default_timezone_set() 函数,但似乎没有任何效果。

我已经盯着它看了一段时间,所以任何帮助表示感谢

【问题讨论】:

  • 第一个解释确切你需要做什么
  • 这是Github bug Help吗?
  • @dabecks:再仔细阅读一遍,然后再试一次,因为它确实有效。
  • @dagon 我也尝试过进入该文件并在第 233 行设置默认时区,但这也不起作用
  • @dabecks:它确实适用于除您之外的所有人。想法?

标签: php symfony


【解决方案1】:

如果由于某种原因您无法在 php.ini 中正确设置它,那么您可以将其设置为 AppKernel 中的第一件事,就像这样..

class AppKernel extends Kernel
{
    public function __construct($environment, $debug)
    {
        date_default_timezone_set('Europe/London');
        parent::__construct($environment, $debug);
    }

    public function registerBundles()
    {
        $bundles = array(
            ....
        );
    }

    ....
}

【讨论】:

  • 这对我有用,但@Pknife 的解决方案也有效,更干净
  • 这是一种替代方法,“如果由于某种原因无法在 php.ini 中正确设置它”。如果您可以使用php.ini 方法,我将始终推荐它。
  • 没问题,能得到反馈就好。以我的方式这样做的主要缺点是,如果您要在不同的时区托管,则需要更新代码。这不是最干净的方法,但是当生活给你柠檬时,你可以在 AppKernel 中设置时区。
  • @qooplmao 我在哪里可以找到 AppKernel 文件?
  • app 目录中。这是您将所有已注册的捆绑包添加到的文件。
【解决方案2】:

找到了解决此问题的类似方法,而其他方法则没有。

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

    php -i | grep "php.ini"

  2. 就我而言,我最终得到:配置文件 (php.ini) 路径 => /etc

  3. 然后cd .. 一直返回并cd 进入/etc,在我的情况下执行ls php.ini 没有出现,只有php.ini.default

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

    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] 并确保以下行格式正确:

    date.timezone = "Europe/Amsterdam"

【讨论】:

  • 这似乎没有解决问题。我通过运行 phpinfo() 验证了我编辑的 php.ini 是正确的,并且看到 .ini 文件的路径是相同的。似乎唯一的修复是上面的那个。
  • @JosephAstrahan,你后来重启了 apache 服务吗?
【解决方案3】:

WAMP/XAMPP 和其他堆栈使用多个 php.ini 文件是非常常见的 - 一个用于 cli,一个用于 web。

由于您从 CLI 遇到错误,请尝试以下操作:

php -i | grep "php.ini"

这将输出用于 cli 的 php.ini 的位置。在那里编辑date.timezone

对于 web 模式,在你的 symfony 的“web”目录中创建一个文件foo.php,只包含“”

<?php phpinfo(); ?>

然后,再次找到使用的php.ini 的位置并编辑date.timezone

【讨论】:

    【解决方案4】:

    编辑您的php.ini(不一定是/etc/php.ini - 使用php -i | grep ini 查找您的版本)并添加您的时区。

    例如对于美国/纽约,它将是:

    date.timezone = "America/New_York"
    

    http://php.net/manual/en/timezones.america.php

    【讨论】:

      【解决方案5】:

      有人提到过,但这很简单:

      sudo cp /etc/php.ini.default /etc/php.ini

      找不到php.ini文件就不能设置时区!!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多