Zeitzonen-Fallback an Options anpassen

  • App
    WoltLab Suite Core

    Hallo!

    Wenn die WCF.class.php nicht auf die PHP.ini zugreifen kann, überschreibt sie die eingestellten Zeitzonen. Auch die aus der options.inc.php.

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

    Das gibt gerade bei der Pluginentwicklung erhebliche Probleme, was ich schon selbst feststellen musste.

    Mein Vorschlag wäre, bei obigem Fallback auf die Variable TIMEZONE (Europe/Berlin) der options.inc.php zurückzugreifen.


    So habe ich es herausgefunden:

    Da meine Scripte nach 00:00 Uhr bei date('Y-m-d') undgmdate('Y-m-d') immer einen Tag zurückhingen habe ich mich auf die Suche nach der Ursache gemacht.

    Die eingestellten Zeitzonen:

    • Server PHP.ini : "Europe/Berlin"
    • options.inc.php / TIMEZONE: "Europe/Berlin"
    • ACP: UTC+01:00, Amsterdam, Berlin, ...
    • Profil: UTC+01:00, Amsterdam, Berlin, ...

    Erst als ich manuell die WCF.class.php editiert und Europe/London zu Europe/Berlin geändert habe, lieferten date() und gmdate() die richtigen Ergebnisse.

    Beste Grüße,

    Less

    Einmal editiert, zuletzt von less (12. Oktober 2017 um 02:26)

  • less 12. Oktober 2017 um 02:30

    Hat den Titel des Themas von „Starren Zeitzonen-Fallback an Options anpassen“ zu „Zeitzonen-Fallback an Options anpassen“ geändert.
  • Marcel Werk 8. Mai 2018 um 18:46

    Hat das Label Nicht geplant hinzugefügt.
    • Offizieller Beitrag

    Das ist so nicht möglich, da der oben genannte Aufruf stattfindet, bevor die options.inc.php überhaupt eingelesen wird. Der Aufruf dient zudem nur dazu, die PHP-Fehlermeldung, die beim Fehlen einer Standard-Zeitzone auftritt, zu unterdrücken. Für die Datumsberechnung innerhalb der WoltLab Suite spielt die Standard-Zeitzone keine Rolle, da ausschließlich DateTime bzw. gmdate genutzt wird.

    Marcel Werk
    WoltLab CEO

  • Erst als ich manuell die WCF.class.php editiert und Europe/London zu Europe/Berlin geändert habe, lieferten date() und gmdate() die richtigen Ergebnisse

    Besten Dank!

    Hatte auch immer das Problem das date ("YmdHis",time()); immer eine Stunde nach ging.

    Nun in der WCF.class.php statt London -> Berlin angegeben und jetzt zeigt es die korrekte Zeit an.

    Gruß, Sascha

  • Wenn ich in der php.ini die date.timezone auskommentiere bekomme ich eine Fehlermeldung auf der HP.

    Code: php.ini
    [Date]
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    date.timezone = Europa/Berlin
    Fehlermeldung

    Tue, 25 May 2021 10:20:48 +0000

    Message: date(): Invalid date.timezone value 'Europa/Berlin', we selected the timezone 'UTC' for now.

    PHP version: 7.4.3

    WoltLab Suite version: 5.3.7

    Request URI: GET /

    Referrer:

    User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36

    Peak Memory Usage: 3016496/134217728

    ======

    Error Class: wcf\system\exception\ErrorException

    Error Message: date(): Invalid date.timezone value 'Europa/Berlin', we selected the timezone 'UTC' for now.

    Error Code: 0

    File: /var/www/shotonlinegolfer.at/lib/system/WCF.class.php (343)

    Extra Information: -

    Stack Trace: [{"function":"handleError","class":"wcf\\system\\WCF","type":"::","file":"[internal function]","line":"?","args":[]},{"file":"\/var\/www\/shotonlinegolfer.at\/lib\/system\/event\/listener\/JCoinsActivityListener.class.php","line":24,"function":"date","class":"","type":"","args":[]},{"file":"\/var\/www\/shotonlinegolfer.at\/lib\/system\/event\/EventHandler.class.php","line":221,"function":"execute","class":"wcf\\system\\event\\listener\\JCoinsActivityListener","type":"->","args":[]},{"file":"\/var\/www\/shotonlinegolfer.at\/lib\/system\/WCF.class.php","line":179,"function":"fireAction","class":"wcf\\system\\event\\EventHandler","type":"->","args":[]},{"file":"\/var\/www\/shotonlinegolfer.at\/global.php","line":13,"function":"__construct","class":"wcf\\system\\WCF","type":"->","args":[]},{"file":"\/var\/www\/shotonlinegolfer.at\/index.php","line":8,"args":["\/var\/www\/shotonlinegolfer.at\/global.php"],"function":"require_once","class":"","type":""}]

    Gruß, Sascha

  • Und die Zeit stimmt auch jetzt, ohne Änderungen an der WCF.class.php?

    Hab die WCF.class.php jetzt wieder auf London statt Berlin geändert und JA die Uhrzeit wird korrekt angezeigt.

    Danke für den Tipp der php.ini!

    Gruß, Sascha

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!