PHP time() returns 比实际时间晚 59 秒的时间戳
PHP time() returns a timestamp that is 59 seconds behind real time
我有一个开发环境和一个生产环境。 time() 函数 returns 在我的开发环境中是正确的时间戳,但在我的生产环境中 time() 正好落后 59 秒!
PHP 的版本在两个环境中都是 7.0.3。
这不可能是时区问题,因为差异只有一分钟,并且 PHP 默认时区在两个环境中是相同的(America/Los 安吉利斯)。
现在是 10:48:29 am,这是在两种环境中同时调用此函数的输出(或者至少与我在控制台上按 enter 的速度一样快)。
开发环境(正确)
php > echo date('h:i:s A');
10:48:29 AM
生产环境(落后一分钟)
echo date('h:i:s A');
10:47:31 AM
time() 函数也是如此
开发环境(正确)
php > echo time();
1568742851
生产环境(落后一分钟)
echo time();
1568742792
并且 1568742851 - 1568742792 = 59 秒
我知道我可以将 59 秒添加到时间戳 time() returns 但这看起来像是一个 hack,并没有解决问题。我想就如何修复我的生产环境获得建议。
确认您允许 NTP 流量进入您的生产 OS 环境。您可以通过 运行 以下命令确认您的服务器是否与 NTP 正确通信 ntpq -c peers
如果您收到 Connection refused
提示,则表示连接不正确。您将需要配置允许端口 123 上的 UDP 流量的入站防火墙规则。完成后,重新启动 NTP 服务 service ntpd restart
并重新运行 ntpq -c peers
命令
我相信你的生产和开发机器上的系统时钟是不同步的,不管 PHP 或操作系统的版本如何,就像评论中提到的@g_bor。
不要被时区弄糊涂了,只要运行系统shell上的命令date +%s
就可以在两台机器上打印时间戳,如果你没有权限(可以' t 使用 ssh 登录),您可以准备包含 system('date +%s');
的 PHP 文件,然后,上传到您的 Web 服务器并打开浏览器以检查两台机器上的时间戳。
我有一个开发环境和一个生产环境。 time() 函数 returns 在我的开发环境中是正确的时间戳,但在我的生产环境中 time() 正好落后 59 秒! PHP 的版本在两个环境中都是 7.0.3。 这不可能是时区问题,因为差异只有一分钟,并且 PHP 默认时区在两个环境中是相同的(America/Los 安吉利斯)。 现在是 10:48:29 am,这是在两种环境中同时调用此函数的输出(或者至少与我在控制台上按 enter 的速度一样快)。
开发环境(正确)
php > echo date('h:i:s A');
10:48:29 AM
生产环境(落后一分钟)
echo date('h:i:s A');
10:47:31 AM
time() 函数也是如此
开发环境(正确)
php > echo time();
1568742851
生产环境(落后一分钟)
echo time();
1568742792
并且 1568742851 - 1568742792 = 59 秒
我知道我可以将 59 秒添加到时间戳 time() returns 但这看起来像是一个 hack,并没有解决问题。我想就如何修复我的生产环境获得建议。
确认您允许 NTP 流量进入您的生产 OS 环境。您可以通过 运行 以下命令确认您的服务器是否与 NTP 正确通信 ntpq -c peers
如果您收到 Connection refused
提示,则表示连接不正确。您将需要配置允许端口 123 上的 UDP 流量的入站防火墙规则。完成后,重新启动 NTP 服务 service ntpd restart
并重新运行 ntpq -c peers
命令
我相信你的生产和开发机器上的系统时钟是不同步的,不管 PHP 或操作系统的版本如何,就像评论中提到的@g_bor。
不要被时区弄糊涂了,只要运行系统shell上的命令date +%s
就可以在两台机器上打印时间戳,如果你没有权限(可以' t 使用 ssh 登录),您可以准备包含 system('date +%s');
的 PHP 文件,然后,上传到您的 Web 服务器并打开浏览器以检查两台机器上的时间戳。