【问题标题】:defining default time zone定义默认时区
【发布时间】:2014-02-06 12:44:30
【问题描述】:

我刚开始使用 symfony 框架进行 php。起初我没有收到关于 date_default_timezone_get() 的任何错误,但后来我收到了类似的错误

date_default_timezone_get():依赖系统的不安全 时区设置。您需要使用 date.timezone 设置 或 date_default_timezone_set() 函数。如果您使用任何 这些方法,您仍然收到此警告,您很可能 时区标识符拼写错误。我们选择了时区“UTC” 现在,但请设置 date.timezone 以选择您的时区。在 C:\wamp\www\Symfony\app\SymfonyRequirements.php 在第 441 行

我将 php.ini 更改为

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

但没有任何改变。

【问题讨论】:

    标签: php date symfony


    【解决方案1】:

    嗯......你在错误中得到了答案。在脚本的开头添加:

    date_default_timezone_set("your_timezone");
    

    http://php.net/manual/en/function.date-default-timezone-set.php

    所有时区列表在这里:http://www.php.net/manual/en/timezones.php

    【讨论】:

    • 我必须将它写入我的所有页面吗?
    • 嗯,是的。我通常使用一个页面(大部分时间称为 common.php)并将其包含在每个其他 .php 文件中。在这个 common.php 中,我定义了所有重要的内容,例如模板设置、数据库连接或变量初始化、获取最新时间等。如果你不这样做,你必须在每个页面中添加它,是的。
    • 其实不必。这就是 php.ini 的用途。
    【解决方案2】:

    您可以通过覆盖 AppKernel 函数来设置默认时区。

    <?php
    // AppKernel.php
    
    class AppKernel extends Kernel
    {
        //..
        //.......
        //...........
        // --- Append the init function below ---
    
        public function init()
        {
            date_default_timezone_set( 'Asia/Kolkata' );
            parent::init();
        }
    }
    

    注意: init 方法从 2.3 版本开始是 deprecated,将在 3.0 中删除。你必须在构造函数中移动你的逻辑:

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

    See detail description

    【讨论】:

    • 我更改了位于“www/Symfony/app”文件夹中的 AppKernel.php,但仍然是同样的错误。
    【解决方案3】:

    更改 php.ini (date.timezone) 中的必要行,然后重置您的服务器应该可以解决您的问题。您更改了线路,但可能没有重置服务器。

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 2023-04-03
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多