我在php.ini文件中设置了默认时区:
date.timezone = Europe/Rome
编辑后我还重新启动httpd
了服务(服务 httpd 重新启动),但是当我调用时date_default_timezone_get()
,它返回 'UTC' 值。
为什么会发生这种情况?
还调用php_info()
显示设置的时区php.ini
PS。对不起我的英语不好。
如果您的代码(包括任何框架)确实根本没有更改时区,并且您在从 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
声明变量PHPIniDir的 apache 文件。
我放了PHPIniDir "C:\PHP\"
您必须删除最后一个反斜杠,它给出:
PHPIniDir "C:\PHP"
我希望这个反馈会有所帮助。
(只是一个精度,我的环境是:Windows 7,php 5.4.32 和 apache 2.2.25)