PHP localtime() 在 Apache 执行时不正确

PHP localtime() incorrect when executed by Apache

我正在尝试编写一个 php 脚本,该脚本使用

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

请务必将此时间设置为与服务器上的本地时间相同,即 Europe/London,因为有一个 crontab 每小时调用一次此脚本。考虑到夏令时也很重要。

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

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

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

非常感谢您的帮助。

您有很多选择,但最常见的是以下两个:

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');
?>