10

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

date.timezone = Europe/Rome

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

为什么会发生这种情况?

还调用php_info()显示设置的时区php.ini

PS。对不起我的英语不好。

4

2 回答 2

3

如果您的代码(包括任何框架)确实根本没有更改时区,并且您在从 5.1.x 到 5.3.x 的 PHP 版本下运行,则可能是TZ环境变量设置在系统中的某个位置。那么您的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 变量”部分。

于 2012-08-12T22:57:30.820 回答
0

我只是有同样的问题。

在我php.ini的 中,时区消息灵通:
date.timezone = Europe/Paris

我检查了 php 命令--ri date
并且时区处理php.ini得很好,所以错误不是来自 ini 文件。

错误来自httpd.conf声明变量PHPIniDir的 apache 文件。

我放了PHPIniDir "C:\PHP\"

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

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

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

于 2014-09-11T13:46:03.720 回答