【问题标题】:Default Europe timezone set in php.ini, but date_default_timezone_get() returns 'UTC'php.ini 中设置的默认欧洲时区,但 date_default_timezone_get() 返回 'UTC'
【发布时间】:2012-08-05 20:37:01
【问题描述】:

我已经在 php.ini 文件中设置了默认时区:

date.timezone = Europe/Rome

编辑后我也重启了httpd服务(服务httpd重启),但是当我调用date_default_timezone_get()时,它返回'UTC'值。

为什么会这样?

同时调用php_info() 会显示php.ini 中设置的时区

PS。对不起我的英语。

【问题讨论】:

  • 你在使用框架吗?有时这些会设置时区。我的猜测是它是在代码中设置的。但如果没有更多细节,我不能说在哪里。
  • 感谢您的回答:)。不,它没有在代码中设置。我使用 date_default_timezone_get() 仅检查是否设置了默认时区。服务器时间设置为正确的日期(意大利的当前日期)。如果有用的话,我有一个 CentoS 5.6 的专用服务器。
  • 它正在某处进行更改。我会在你的代码中搜索date_default_timezone_set()。您没有通过 htaccess、vhost 等设置 INI 选项?
  • 不,我确定。而且我的代码中没有那个功能。也许我可以尝试升级 PHP...
  • 意识到这是一个相当大的死灵,我也有同样的问题。 phpinfo() 显示我的正确时区,但 date_default_timezone_get() 返回 UTC。完全相同的问题。我在 php 5.6.20

标签: php date timezone


【解决方案1】:

如果您的代码(包括任何框架)确实根本没有更改时区,并且您在 PHP 版本从 5.1.x 到 5.3.x 下运行,那么@ 987654322@ 环境变量设置在系统中的某个位置。那么您的date.timezone 设置将被忽略

参见date.timezone 的 PHP 手册页(强调我的):

所有日期/时间函数使用的默认时区。 在 PHP 5.4.0 之前,这仅在未设置 TZ 环境变量时才有效。 […]

要检查您的系统中是否设置了TZ 环境变量,您可以使用

if (isset($_ENV['TZ'])) {
    echo 'TZ=' . $_ENV['TZ'];
}
else {
    echo 'TZ not set';
}

或者放

phpinfo();

在您的代码中的某处并检查其输出最底部的“PHP 变量”部分。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。

    在我的php.ini 中,时区 很清楚:
    date.timezone = Europe/Paris

    我检查了 php 命令--ri date
    php.ini 中的 timezone 得到了很好的处理,因此错误不是来自 ini 文件。

    错误来自httpd.conf apache 的文件,其中声明了变量 PHPIniDir

    我已经把PHPIniDir "C:\PHP\"

    您必须删除最后一个反斜杠:
    PHPIniDir "C:\PHP"

    我希望这些反馈会有所帮助。

    (只是一个精度,我的环境是:Windows 7,php 5.4.32 和 apache 2.2.25)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 2012-12-19
      • 2016-07-11
      相关资源
      最近更新 更多