我有一个开发环境和一个生产环境。函数在dev env中返回正确的时间戳,但在我的生产环境中,time()正好落后59秒!在这两个环境中,PHP的版本都是7.0.3。这不可能是时区问题,因为差别只有一分钟,PHP默认时区在两种环境中都是相同的(美国/洛杉矶)。现在是上午10:48:29,这是在两个环境中同时调用此函数的输出(或者至少在控制台上按enter键的速度)。
开发环境(正确)
php > echo date('h:i:s A');
10:48:29 AM
生产环境(落后1分钟)
echo date('h:i:s A');
10:47:31 AM
time()函数也是如此
开发环境(正确)
php > echo time();
1568742851
生产环境(落后1分钟)
echo time();
1568742792
和1568742851 - 1568742792 = 59秒
我知道我只需在时间戳时间()返回中增加59秒,但这似乎是一个黑客,并不能解决问题。我想得到关于如何修复我的生产环境的建议。
发布于 2019-10-11 18:32:26
确认您正在允许NTP通信到生产操作系统环境。如果您收到一个ntpq -c peers
提示符,您可以通过运行下面的命令Connection refused
来确认您的服务器是否正确地与Connection refused
通信。您需要配置一个入站防火墙规则,允许在端口123上进行UDP通信。完成后,重新启动NTP服务service ntpd restart
并重新运行ntpq -c peers
命令。
发布于 2019-10-16 08:11:11
我相信您的产品和开发机器上的系统时钟是不同步的,不管PHP或操作系统的版本如何,就像评论中提到的@g_bor一样。
不要被时区搞糊涂,只需在系统外壳上运行date +%s
命令在两台机器上打印时间戳,如果没有权限(不能登录ssh),可以准备包含system('date +%s');
的system('date +%s');
文件,然后上传到web服务器并打开浏览器检查两台机器上的时间戳。
https://stackoverflow.com/questions/57979743
复制相似问题