Zeitzonen-Angleich PHP/MySQL + veralteten Settings-Test aktualisiert
Zwei vorbestehende, bislang rote Pruefungen behoben.
1) PHP lief in UTC, MySQL in der System-Zeitzone (hier CEST, +2h). Ueberall,
wo ein in PHP berechneter Zeitstempel gegen MySQL NOW() verglichen wird,
liefen die Uhren dadurch gegeneinander:
- Hinweise mit kurzer Restlaufzeit galten sofort als abgelaufen
(notices: valid_from = NOW() aus MySQL, valid_until aus PHP date()).
- Auth-Token (Passwort-Reset, E-Mail-Verifikation) liefen bis zu 2h zu
frueh ab (expires_at aus PHP date(), Pruefung gegen NOW()).
bootstrap.php pinnt die PHP-Zeitzone jetzt deterministisch aus
APP_TIMEZONE (Standard Europe/Berlin), app_db_pdo() setzt die DB-Session
per numerischem Offset auf dieselbe Zeit. Damit stimmen beide Uhren
ueberein. Behebt check-m8-tenant-isolation (11/1 -> 12/0).
2) check-m3-settings-flow stammte aus M3 und lieferte nicht die spaeter
hinzugekommenen Pflichtfelder (pdf_row_height_px,
payment_reminder_interval_days). Dadurch schlug bereits das Update fehl und
alle Folge-Assertions kippten. Der Test sendet jetzt den vollstaendigen
Feldsatz wie das Einstellungsformular und prueft die beiden Felder mit.
Die Update-Funktion selbst war korrekt (7/6 -> 15/0).
Voller Regressionslauf gruen: http-smoke 33/0, role-matrix 55/0,
tenant-isolation 12/0, m3-auth 9/0, password-email 14/0, settings 15/0,
tenant-resolution 12/0, billing 10/0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,11 @@
|
||||
|
||||
putenv('APP_ENV=prod');
|
||||
|
||||
// Zeitzone der Anwendung. Wird sowohl fuer PHP als auch fuer die DB-Session
|
||||
// verwendet, damit in PHP berechnete Zeitstempel und MySQL NOW() dieselbe Uhr
|
||||
// sehen (Token-Ablaeufe, Hinweis-Gueltigkeiten usw.). Standard: Europe/Berlin.
|
||||
putenv('APP_TIMEZONE=Europe/Berlin');
|
||||
|
||||
// Eigene App-Domain. Nur Traffic mit genau diesem Host-Header bekommt das
|
||||
// Dashboard/Login/etc.; jeder andere Host (z. B. kaffeeliste.de) zeigt
|
||||
// stattdessen die Landingpage. Siehe index.php.
|
||||
|
||||
Reference in New Issue
Block a user