Page 1 of 1

nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Sun 1. Dec 2019, 00:36
by ThomasTailor93
Hallöchen,

mir ist heute das Phänomen aufgefallen, dass bei nur einer (neuen) Subdomain die Zeiten falsch berechnet werden.

Sobald ich bei DOMAINALT per PHP den Timestamp 1575156343 berechne, bekomme ich 01.12.2019 12:25 raus - so korrekt. Bei DOMAINNEU bekomme ich aber 30.11.2019 11:25 raus. Hat da jemand ein ähnliches Problem?

Liebe Grüße

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Mon 2. Dec 2019, 09:38
by Alexander
Deine Domains laufen also scheinbar mit verschiedenen PHP-Versionen.

Ein Neustart der betroffenen PHP-FPM Instanz(en) sollte das Problem beheben. Ursache kann sein, dass die System-Zeit / die Konfiguration der jeweiligen PHP Version angepasst wurde, aber der entsprechende PHP- FPM nicht neu gestartet / neu geladen wurden.

Code: Select all

# für die OS Version
service php7.2-fpm restart

# für die zusätzlich Installierten (XX natürlich durch Versionsnummer ersetzen)
service keyhelp-phpXX-fpm restart

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Mon 2. Dec 2019, 19:05
by ThomasTailor93
Negativ, die Subdomain läuft auf PHP (7.3.11) wie die Hauptdomain. Habe auch eben erneut das so eingestellt und mal den Server neugestartet - keine Änderung wirksam.

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Thu 5. Dec 2019, 19:07
by ThomasTailor93
Hallöchen,

ich habe jetzt noch mal alles überprüft. Die Hauptdomain läuft auf Standardinterpreter 7.3.11 (Debian 10), es wurden keine zusätzlichen Interpreter installiert. Die Subdomains wurden jetzt alle noch mal manuell auf "wie Hauptdomain" geändert. Zusätzlich habe ich php-fpm auch noch mal neugestartet. Leider hat das kein positives Ergebnis gebracht - der Timestamp läuft immer noch eine Stunde hinterher. An was könnt es jetzt noch liegen?

// Edit:

die Zeit der Hauptdomain läuft korrekt, genau so wie eine zweite Subdomain - es ist nur die dritte (neue) die hinterher hängt. Serverzeit ist auch korrekt.

// Korrektur:

mittlerweile laufen alle Domains eine Stunde hinterher

LG

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Thu 5. Dec 2019, 19:26
by Jolinar
- Im Startpost beschreibst du eine Zeitdifferenz von 25 Stunden, im letzten Post von 1 Stunde. Welche Angabe ist nun aktuell richtig?
- Stimmt denn eigentlich die Systemzeit, wenn du am CLI mit:

Code: Select all

date -R
abfragst?
- Wie genau gewinnst du den Timestamp, auf dem deine Berchnungen beruhen?

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Thu 5. Dec 2019, 19:43
by ThomasTailor93
Jolinar wrote: Thu 5. Dec 2019, 19:26 - Im Startpost beschreibst du eine Zeitdifferenz von 25 Stunden, im letzten Post von 1 Stunde. Welche Angabe ist nun aktuell richtig?
- Stimmt denn eigentlich die Systemzeit, wenn du am CLI mit:

Code: Select all

date -R
abfragst?
- Wie genau gewinnst du den Timestamp, auf dem deine Berchnungen beruhen?
Öhh, ja, weil das um nach 0 Uhr war - hätte das so korrekter schreiben sollen, hast tatsächlich recht.

Systemzeit stimmt:
Thu, 05 Dec 2019 19:43:07 +0100

Den Timestamp schreibe ich per time() in die DB und hole ihn direkt so raus - Direktvergleich ist 1:1 korrekt.

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Thu 5. Dec 2019, 19:49
by Jolinar
ThomasTailor93 wrote: Thu 5. Dec 2019, 19:43 Öhh, ja, weil das um nach 0 Uhr war - hätte das so korrekter schreiben sollen, hast tatsächlich recht.
Hatte ich schon vermutet, wollte jetzt nur sichergehen.

Stimmen die Zeitzoneneinstellungen von PHP?

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Thu 5. Dec 2019, 19:53
by ThomasTailor93
Jolinar wrote: Thu 5. Dec 2019, 19:49
ThomasTailor93 wrote: Thu 5. Dec 2019, 19:43 Öhh, ja, weil das um nach 0 Uhr war - hätte das so korrekter schreiben sollen, hast tatsächlich recht.
Hatte ich schon vermutet, wollte jetzt nur sichergehen.

Stimmen die Zeitzoneneinstellungen von PHP?
Hatte aus Test date_default_timezone_set('Europe/Berlin'); probiert - keine Änderung. date_default_timezone_get ergab Europe/Berlin. Sonst habe ich nichts geändert.

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Fri 6. Dec 2019, 08:16
by Tobi
Dann lade mal auf beiden Seiten eine phpinfo() Datei hoch und kontrolliere die Ausgabe auf Unterschiede.

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Fri 6. Dec 2019, 08:30
by Alexander
Den Timestamp schreibe ich per time() in die DB und hole ihn direkt so raus - Direktvergleich ist 1:1 korrekt.
Geht es jetzt hier nur um PHP oder um die Datenbank?

Wenn du über die Datenbank gehst dann erhältst du die falsche Zeit? Ist es wirklich nur ein Timestamp int? Ist die Zeitzone deiner Datenbank auch korrekt eingestellt? Bzw. setzt deine Anwendung auch die korrekte Zeitzone (SET time_zone = '<OFFSET>')?

Was ergibt denn ein simples

Code: Select all

<?php echo date('c');

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Fri 6. Dec 2019, 10:16
by Jolinar
Da es hier um einen Unterschied von einer Stunde geht, könnte neben einem Problem mit der Zeitzone auch eventuell noch die Sommer-/Normalzeit dazwischenfunken?
Was gibt denn die PHP Funktion date mit dem Parameter "I" (großes i) aus?

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Sat 7. Dec 2019, 02:50
by ThomasTailor93
Tobi wrote: Fri 6. Dec 2019, 08:16 Dann lade mal auf beiden Seiten eine phpinfo() Datei hoch und kontrolliere die Ausgabe auf Unterschiede.
Keinerlei Unterschiede feststellbar. Soweit sieht das auch gut aus:

date/time support enabled
timelib version 2018.02
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone Europe/Berlin
Alexander wrote: Fri 6. Dec 2019, 08:30
Den Timestamp schreibe ich per time() in die DB und hole ihn direkt so raus - Direktvergleich ist 1:1 korrekt.
Geht es jetzt hier nur um PHP oder um die Datenbank?

Wenn du über die Datenbank gehst dann erhältst du die falsche Zeit? Ist es wirklich nur ein Timestamp int? Ist die Zeitzone deiner Datenbank auch korrekt eingestellt? Bzw. setzt deine Anwendung auch die korrekte Zeitzone (SET time_zone = '<OFFSET>')?

Was ergibt denn ein simples

Code: Select all

<?php echo date('c');
Es geht um PHP. In der Datenbank wird nur der Zeitstempel abgelegt - ich verarbeite diesen in PHP. Der Zeitstempel wird auch korrekt geschrieben.
MySQL ist korrekt eingestellt. Habe direkt mal SELECT CURRENT_TIME eingegeben > 02:47:17.

date('c') > 2019-12-07T01:48:55+00:00
Jolinar wrote: Fri 6. Dec 2019, 10:16 Da es hier um einen Unterschied von einer Stunde geht, könnte neben einem Problem mit der Zeitzone auch eventuell noch die Sommer-/Normalzeit dazwischenfunken?
Was gibt denn die PHP Funktion date mit dem Parameter "I" (großes i) aus?
date('I') > 0, also keine Sommerzeit

Irgend was ist echt komisch..

Danke für eure Hilfe vorab.

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Sat 7. Dec 2019, 03:02
by ThomasTailor93
So, sorry als Doppelpost. Aber der Übersicht halber.

Ich führe diverse Abfragen über die Woltlab Suite API durch - und durch Zufall habe ich heraus gefunden, dass nach Einbindung global.php der Suite die Zeit auf einmal falsch ist. Werde nun man erkunden warum... darauf muss man echt erst einmal kommen.

Danke für die Hilfe!

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)

Posted: Sat 7. Dec 2019, 06:11
by Jolinar
ThomasTailor93 wrote: Sat 7. Dec 2019, 03:02 Werde nun man erkunden warum
Da stimmt die Zeitzone in der WL-Installation nicht. Gib im WL-ACP einfach "Zeitzone" im Suchfeld ein, dann solltest du zu der richtigen Einstellung kommen.

Re: nur bei Subdomain - falsche Zeitberechnung (PHP)  [GELÖST]

Posted: Sat 7. Dec 2019, 20:09
by ThomasTailor93
Jolinar wrote: Sat 7. Dec 2019, 06:11
ThomasTailor93 wrote: Sat 7. Dec 2019, 03:02 Werde nun man erkunden warum
Da stimmt die Zeitzone in der WL-Installation nicht. Gib im WL-ACP einfach "Zeitzone" im Suchfeld ein, dann solltest du zu der richtigen Einstellung kommen.
War tatsächlich etwas komplizierter.

Für die API muss man die WCF.class.php inkludieren. Dort war aber die Zeitzone wie folgt eingestellt:

// fix timezone warning issue
if (!@ini_get('date.timezone')) {
@date_default_timezone_set('Europe/London');
}

Nun auf Europe/Berlin gestellt und es geht.