【问题标题】:PHP localtime() incorrect when executed by ApacheApache 执行时 PHP localtime() 不正确
【发布时间】:2016-04-05 17:37:12
【问题描述】:

我正在尝试编写一个使用获取当前本地时间的 php 脚本

localtime(time(), true);

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

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

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

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

非常感谢您的帮助。

【问题讨论】:

  • 尝试在您的 php.ini 文件中添加 date.timezone = "Europe/London"。然后重启apache2服务。如果可行,我会更改我的评论以获得答案
  • 这里是 PHP/MySQL 与服务器时区同步的详细站点:sitepoint.com/synchronize-php-mysql-timezone-configuration
  • @SamyQc 谢谢,对不起,我可能不清楚这一点。我的 php.ini 文件设置了“欧洲/伦敦”。 'date.timezone = "欧洲/伦敦"'。我还使用 phpinfo() 检查了我正在编辑正确的 .ini 文件

标签: php linux apache time localtime


【解决方案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');
?>

【讨论】:

  • 谢谢!我查了一下,它被添加为“欧洲/伦敦”。但它仍然落后一小时注销并且 tm_isdst 为 0
  • 默认时区仍然设置为 UTC,所以我想这与它有关,但我怎么能改变它(理想情况下只适用于这个脚本而不是整个服务器)
  • 太棒了,我尝试了 date_default_timezone_set 方法,它奏效了。非常感谢,:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 2021-02-18
  • 2013-08-01
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
相关资源
最近更新 更多