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

时间:2012-12-20 18:49:16

标签: php unix timestamp unix-timestamp

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

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

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

我在两台服务器上都放了time(),结果是:它只相差一小时。 看看:

由于time()应始终以UTC为基础,我无法解释,这是怎么发生的。

有人有任何想法吗?

亚琛的问候

3 个答案:

答案 0 :(得分:6)

显然,服务器1和服务器2设置为不同的时间。检查 BIOS 服务器的操作系统时间。

答案 1 :(得分:1)

为了加入欢乐的节日,我给你另一个选择。

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

但是如果您安装说NTPD,则不会发生这种情况。 (通常)

答案 2 :(得分:0)

这可能是由于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');