time()根据服务器返回不同的时间戳

我现在search了好几个小时,好像没有人遇到过这个问题。

我运行一个脚本,在两台服务器上将当前时间戳写入数据库。 两者都有相同的操作系统,软件,…和相同的时区。

现在我发现,一些时间戳和当前时间()之间的差异是负数(是的,计算是正确的: time() - $older_timestamp

我在两台服务器上都浪费了时间(),结果:它相差一个小时。 一探究竟:

  • 时间()在服务器#1:-1小时
  • 时间()在服务器#2:正确的时间戳

因为time()应该总是以UTC为基础的,所以我不能解释这是怎么发生的。

有人有什么想法吗?

来自亚琛的问候

显然,服务器一和服务器二被设置为不同的时间。 检查BIOS和您的服务器的操作系统时间。

为了增添欢乐,我给你另外一个选择。

操作系统的时区可能设置不正确。 如果两个时钟同时显示,但是一个服务器认为它在伦敦而另一个认为它在亚琛,则从系统调用返回的UTC时间将相差一个小时。

如果你会安装说NTPD没有这会发生。 (通常)

这可能是由于Apache的php.ini的时区设置错误导致的。 检查php.ini文件中的date.timezone =并将其更改为您的时区。 PHP的时区列表可以在这里找到: http : //php.net/manual/en/timezones.php

例如:

 date.timezone = 'America/Chicago' 

如果不能直接编辑php.ini文件,也可以使用ini_set

 ini_set('date.timezone', 'America/Chicago');