默认欧洲时区在php.ini中设置,但date_default_timezone_get()返回'UTC'

时间:2012-08-08 17:01:26

标签: php date timezone

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

date.timezone = Europe/Rome

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

为什么会这样?

同时调用php_info()会显示php.ini

中设置的时区

PS。抱歉我的英文。

2 个答案:

答案 0 :(得分:3)

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

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

  

所有日期/时间功能使用的默认时区。 在PHP 5.4.0之前,只有在未设置TZ环境变量时才会有效。 [...]

要检查系统中是否设置了date.timezone环境变量,可以使用

TZ

或放

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

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

答案 1 :(得分:0)

我遇到了同样的问题。

在我的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)