Apache localtime()在执行时不正确

时间:2016-04-05 17:37:13

标签: php linux apache time localtime

我试图编写一个使用

获取当前本地时间的php脚本
localtime(time(), true);

将此时间设置为与服务器上的本地时间(欧洲/伦敦)相同非常重要,因为有一个crontab每小时调用一次此脚本。此外,重要的是要考虑夏令时。

我的服务器上的时钟是正确的,当我在PHP交互式shell上运行该函数时,会返回正确的时间,但是当Apache运行脚本时,它会在后面一小时报告,并且 tm_isdst 记录 falsey

我已经检查了我的Apache php.ini文件,我确定它是正确的文件,因为我已经检查了phpinfo(),但是也许有其他文件覆盖了这个?

我也尝试重新加载并重启Apache(成功),但它仍然没有考虑到正确的时间。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你有很多选择,但最常见的选择是这两个:

<强> 1。列出要检查的变量

检查你的php.ini中是否使用<?php phpinfo(); ?>设置时区然后在空文件中添加该函数,文件名即 phpInfo.php 并通过web环境请求该文件

您必须搜索此变量date.timezone=。然后尝试在本地php.ini文件中添加它。有关PHP.Net的更多信息。如果您无法访问php.ini文件,请转到步骤2.

<强> 2。直接在您的php文件中添加时区

如果您正在使用任何类型的MVC或同时使用任何类型的引导文件的应用程序,那么您最好的选择是不将date_default_timezone_set();添加到您正在调用的第一个php文件中。 Timezones Supported in EU

进行简单测试以查看时区是否发生变化

<?php
date_default_timezone_set('Europe/London');

echo date('Y-m-d H:i:s');
?>