Saati kaymış bir sunucu, saat dışında her şeye benzeyen hatalar üretir: "henüz geçerli değil" diyen sertifikalar, doğru parolayla başarısız olan girişler, yanlış saatte çalışan zamanlanmış görevler. Bunu erkenden elemek değer, çünkü tek bir komuta bakar.
timedatectl
Eşzamanlamayı açın
timedatectl set-ntp true
timedatectl show -p NTPSynchronized --value
Üç saat, üç ayar
- Sistem - onu UTC'de tutun. O zaman her kayıt ve saklanan her zaman damgası kuşkuya yer bırakmaz.
- PHP - date.timezone; date() işlevinin ne yazdıracağını etkiler, başka hiçbir şeyi değil.
- MySQL - kendi time_zone değeri vardır; NOW() ve CURRENT_TIMESTAMP'i etkiler.
date
php -r 'echo date("Y-m-d H:i:s T"), PHP_EOL;'
mysql -e "SELECT NOW(), @@global.time_zone, @@session.time_zone;"
PHP zaman damgasını yerel saatle yazar ve MySQL UTC olarak saklarsa, her karşılaştırma o fark kadar sapar - ve bunu ancak yılda iki kez, fark değiştiğinde biri fark eder. UTC saklayın, gösterirken çevirin.
Saat şaştığında neler bozulur
- TLS. Yarından itibaren geçerli bir sertifika bugün reddedilir. Tarayıcının hatası saati değil, sertifikayı işaret eder.
- Belirteçler ve iki aşamalı doğrulama. Bir TOTP kodu zamandan türetilir; otuz saniyeden fazla sapma varsa her kod yanlıştır.
- Zamanlanmış görevler. İşler yanlış saatte çalışır, ya da iki kez çalışır, ya da bir değişim anında hiç çalışmaz.
- Kayıtları eşleştirmek. Aralarında dakikalar olan iki sunucu hiçbir şekilde birlikte okunamaz.
Sistemi UTC'ye ayarlayın ve bir daha asla değiştirmeyin. Yerel saati insanlara mümkün olan en son anda gösterin - tarayıcıda, onların kendi saatinden.