我在php.ini文件中设置了默认时区:
date.timezone = Europe/Rome
编辑后我也重新启动了httpd
服务(服务 httpd 重新启动),但是当我调用 date_default_timezone_get()
时,它返回"UTC"值。
为什么会这样?
同时调用php_info()
会显示在 php.ini
中设置的时区
对不起我的英语。
如果你的代码(包括任何框架)真的没有改变时区,并且你在从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 变量"部分。
我刚刚遇到了同样的问题。
在我的php.ini
,时区是消息灵通的:
date.timezone = Europe/Paris
我用 php 命令检查了--ri date
php.ini
的时区得到了很好的处理,所以错误不是来自 ini 文件。
错误来自httpd.conf
apache的文件,其中声明为变量PHPIniDir。
我把PHPIniDir "C:'PHP'"
您必须删除最后一个反斜杠,该反斜杠提供:
PHPIniDir "C:'PHP"
我希望这些反馈会有所帮助。
(只是一个精度,我的环境是:Windows 7,php 5.4.32和apache 2.2.25)