0

開発環境と本番環境があります。time() 関数は開発環境では正しいタイムスタンプを返しますが、本番環境では time() は正確に 59 秒遅れています! PHP のバージョンは、両方の環境で 7.0.3 です。違いはわずか 1 分であり、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 秒

タイムスタンプ time() の戻り値に 59 秒を追加するだけでよいことはわかっていますが、それは単なるハックのようで、問題は解決しません。本番環境の修正方法についてアドバイスをお願いします。

4

2 に答える 2

2

Confirm that you are allowing NTP traffic to your production OS environment. You can confirm that your server is properly communicating to NTP by running the following command ntpq -c peers If you receive a Connection refused prompt you don't have proper connectivity. You will need to configure an inbound firewall rule allowing UDP traffic on port 123. Once this is done, restart your NTP service service ntpd restart and rerun the ntpq -c peers command

于 2019-10-11T18:32:26.893 に答える