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

标签 php linux apache time localtime

我正在尝试编写一个使用获取当前本地时间的 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/

相关文章:

PHP int to date 问题

apache - url重写mod_rewrite

apache - 在 Ubuntu 11.04 中安装 CakePHP 2

php - csv 文件中的空行

php - 如何进行部分页面刷新并每次获取新数据或值

php - mysql从4个表中选择

linux - 使用引入的名称创建文件的 Bash 脚本

c++ - 无法将 ncurses 与 Qt 链接

linux - Raspberry PI Node EventEmitter 内存泄漏

apache - 无法关闭 RewriteRule