我正在尝试编写一个使用获取当前本地时间的 php 脚本
localtime(time(), true);
请务必将此时间设置为与服务器上的本地时间相同,即欧洲/伦敦,因为有一个 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');
?>
关于PHP localtime() 在 Apache 执行时不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433315/