【问题标题】:PHP Configuration: It is not safe to rely on the system's timezone settings [duplicate]PHP配置:依赖系统的时区设置是不安全的[重复]
【发布时间】:2011-01-13 21:23:29
【问题描述】:

这是一个奇怪的。 我刚刚升级到 php 5.3.0,升级后我收到以下警告:

警告:getdate() [function.getdate]: 依赖系统的安全性是不安全的 时区设置。你是必需的 使用 date.timezone 设置或 date_default_timezone_set() 功能。如果您使用任何 那些方法,你还在 收到此警告,您很可能 时区标识符拼写错误。我们 选择“美国/芝加哥”为 'CST/-6.0/无夏令时'

看了各种论坛,大家都说要解决这个问题,你只需要编辑php.ini中的日期区,然后重启Apache即可。

它对我不起作用。

我试过了

date.timezone="America/New_York"

date.timezone=America/New_York

date.timezone="US/Central"

更改后重新启动 apache。

由于我仍然安装旧版本的 php,我什至确保我正在编辑当前版本的 php 加载时使用的 php.ini

/usr/local/php5/lib/php.ini

仍然收到警告。

有什么建议吗?

感谢您抽出宝贵时间。

【问题讨论】:

  • 您是否在编辑正确的ini文件?
  • 我发现这是时区设置在 apache php.ini 而不是 cli php.ini 的问题。
  • 时区必须是真实的,UTC 或 GMT 不起作用。
  • 我解决了删除文件 php.ini 中的注释。只需删除';'在 date.timezone 之前!!

标签: php timezone


【解决方案1】:

您是否尝试通过 func 设置时区: http://pl.php.net/manual/en/function.date-default-timezone-set.php

【讨论】:

  • +1!!很简单的方法..
  • 我在用Yii,遇到同样的问题,在yii哪里设置?
【解决方案2】:

检查 php.ini 文件中的语法错误,特别是之前日期参数,这会阻止文件被正确解析。

【讨论】:

    【解决方案3】:

    我最近碰巧不得不在两台笔记本电脑上设置 Apache 和 PHP。在哭泣和咬牙切齿之后,我在 phpinfo 的输出中注意到(无论出于何种原因:在 PHP 安装期间没有注意,安装程序错误)Apache 期望 php.ini 出现在它不存在的地方。

    两个选择:

    1. 把它放在 Apache 认为应该的地方或
    2. 将 Apache 指向 php.ini 的真实位置

    ... 并重新启动 Apache。此时应识别时区设置。

    【讨论】:

      【解决方案4】:

      对原始问题发表评论的 Tchalvak 为我一针见血。我一直在编辑(我使用 Debian):

      /etc/php5/apache2/php.ini
      

      ...它对我来说有正确的时区,并且是唯一一个在其中加载了 date.timezone 的 .ini 文件,但是当我通过 Bash 运行脚本时收到上述错误。我不知道我应该一直在编辑:

      /etc/php5/cli/php.ini
      

      也是。 (嗯,对我来说它是“同样”,对你来说当然可能会有所不同,但我现在要让我的 Apache 和 CLI 版本的 php.ini 保持同步)。

      【讨论】:

      • +1 天哪,你是救世主!!!!!!!!!!!!我将 CLI 文件符号链接到 apache ini 文件。不再有这种困惑!
      • 没问题!说实话,符号链接可能是最好的计划。很高兴有帮助。 :)
      【解决方案5】:

      你也可以试试这个

      date.timezone = <?php date('Y'); ?>
      

      【讨论】:

        【解决方案6】:

        请修改你的 index.php 如下:

        require_once($yii);
        $app = Yii::createWebApplication($config);
        Yii::app()->setTimeZone('UTC');
        $app->run();
        

        【讨论】:

        • 虽然你的回答可以解决问题,但对它的工作原理做一点评论不会有坏处,并且会让 OP 更好地理解你在做什么。
        • 在自动生成的代码中,yii 使用配置文件中给出的信息创建了应用程序。在这种情况下,在应用程序级别,我们正在设置时区。所以我们需要创建$app而不是写成
        • 在自动生成的代码中,yii 使用配置文件中给出的信息创建了应用程序。在这种情况下,在应用程序级别,我们正在设置时区。所以我们需要创建 $app 而不是写为 Yii::createWebApplication($config)->run() 因为这不允许我们在运行之前对应用程序进行任何修改。我们想让应用知道我们的时区的改变。将来,如果您想更改任何其他参数,则可以通过在运行前修改应用程序来轻松完成。希望它能清除我想要做什么:)
        【解决方案7】:

        显然我在这个问题上有点不合时宜,但为了下一个患者的利益:我刚刚遇到了这个问题,在我的情况下(与 OP 尝试相同但没有成功的情况相反)修复是修改php.ini,改变

        date.timezone = America/New York
        

        date.timezone = America/New_York
        

        即加下划线。

        【讨论】:

          【解决方案8】:

          我修改了/etc/php.ini

          [日期] ;定义日期函数使用的默认时区 ; http://php.net/date.timezone date.timezone =('亚洲/加尔各答')

          现在工作正常。

          维宾朋友

          【讨论】:

            【解决方案9】:

            试试这个,它对我有用。

            date_default_timezone_set('America/New_York');
            

            在抱怨的实际文件中。

            【讨论】:

              【解决方案10】:

              打开您的 .htaccess 文件,将此行添加到文件中,保存,然后重试:

              php_value date.timezone "America/Sao_Paulo"
              

              这对我有用。

              【讨论】:

                【解决方案11】:

                您可能忘记删除分号以取消注释该行。对于date.timezone = "US/Central" 行,请确保该行前面没有分号。

                【讨论】:

                  【解决方案12】:

                  奇怪的是,我发现我可以通过将时区声明放在我的 php.ini 文件的顶部来修复错误。

                  它已经在我的 php.ini 中了。两次,实际上。我正在拔头发,因为每个人都说肯定有另一个 ini 正在加载......没有。

                  希望这可以节省其他人的时间/脱发。

                  【讨论】:

                    猜你喜欢
                    • 2011-08-27
                    • 2014-07-18
                    • 2017-11-20
                    • 2011-08-07
                    • 2015-07-13
                    • 2012-09-14
                    • 2019-06-22
                    • 2016-07-22
                    相关资源
                    最近更新 更多