Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitzone in PHP-Script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zeitzone in PHP-Script

    Hallo,

    folgende Erscheinung. Ich verwende in einem Managed-Server-Paket in einem Logging-Script in PHP einen mit date() erzeugten Zeitstempel. Kürzlich fiel mir auf, daß der um zwei Stunden danebenliegt: Es sollte mitteleuropäische Sommerzeit sein, ist aber UTC. Hauptverdacht natürlich sofort: Zeitzonenproblem. Aber wo?

    Die Systemzeit ist MESZ (jetzt, 11.4.20, 9:19 per SSH auf den Server und Ausgabe von date):

    Klicken Sie bitte auf die Grafik für eine vergrößerte Ansicht

Name: 20200411-092020.jpg
Ansichten: 425
Größe: 12,2 KB
ID: 5373

    Die Zeitzone in PHP ist Europe/Berlin. Steht so in PHP.INI:

    Klicken Sie bitte auf die Grafik für eine vergrößerte Ansicht

Name: 20200411-092326.jpg
Ansichten: 259
Größe: 12,8 KB
ID: 5374

    Nun ein kleines Testscript ausprobiert:

    Code:
    <?php
    
    #phpinfo();
    echo date("Y-m-d:Hi")."<br/>\n";
    date_default_timezone_set('Europe/Berlin');
    echo date("Y-m-d:Hi")."<br/>\n";
    
    ?>
    … und das liefert mir die Ausgabe:

    Klicken Sie bitte auf die Grafik für eine vergrößerte Ansicht

Name: 20200411-092738.jpg
Ansichten: 273
Größe: 11,9 KB
ID: 5375

    Wenn ich nun per phpinfo() gegenchecke (einfach die Zeile wieder reinkommentiert im time.php von da oben), siehe da:

    Klicken Sie bitte auf die Grafik für eine vergrößerte Ansicht

Name: 20200411-092534.jpg
Ansichten: 259
Größe: 27,4 KB
ID: 5376

    … tatsächlich UTC. Klar kann ich hingehen und in dem Logging-Script am Anfang die Zeitzone manuell setzen, aber hier bin ich jetzt neugierig, warum php auf UTC zurückgreift. Ich verwende eine editierte php.ini für PHP7 für den ganzen Auftrag, aber da ist, wie oben screengeshottet, Europe/Berlin gesetzt. Im Verzeichnis liegt auch noch eine php.ini, die enthält aber nur die einzige Zeile allow_url_fopen = 1 für ein anderes Script. Nach menschlichem Ermessen sollte php also Europe/Berlin verwenden. Warum tut es das hier nicht?

    Grüße und Danke
    Philipp

    #2
    Zitat von phi__ Beitrag anzeigen
    Im Verzeichnis liegt auch noch eine php.ini, die enthält aber nur die einzige Zeile allow_url_fopen = 1 für ein anderes Script. Nach menschlichem Ermessen sollte php also Europe/Berlin verwenden. Warum tut es das hier nicht?
    Bitte ergänzen sie hier entweder die passenden Zeilen oder deaktivieren diese (umbenennen). Eine PHP.INI wird nicht aus allen Angaben her sozusagen aufaddiert.

    Es gilt das was im Kundenmenü beschrieben wird:

    Bei der Ausführung von PHP-Skripten werden PHP-Einstellungen in der folgenden Reihenfolge gesucht:
    1. PHP.INI im Verzeichnis des ausgeführten Skriptes
    2. für die Domain festgelegte PHP.INI
    3. für den Auftrag festgelegte PHP.INI

    Ausgewertet wird nur die erste gefundene PHP.INI-Datei. Wird keine PHP.INI gefunden, werden die Standardeinstellungen des Webservers verwendet.
    Wenn Sie also eine PHP.INI im Verzeichnis haben, dann wird die verwendet. Alle dort nicht aufgeführten Werte werden mit dem Standard von PHP auf dem Webserver ersetzt. Es wird dann nicht auf Einstellungen aus dem Kundenmenü zurückgegriffen.

    Mit freundlichen Grüßen

    Nils Dornblut
    Blog - Facebook - Twitter
    Communitybetreiber: domainfactory GmbH
    Impressum / Pflichtangaben

    Kommentar


      #3
      Zitat von Nils Dornblut Beitrag anzeigen
      Eine PHP.INI wird nicht aus allen Angaben her sozusagen aufaddiert. Wenn Sie also eine PHP.INI im Verzeichnis haben, dann wird die verwendet. Alle dort nicht aufgeführten Werte werden mit dem Standard von PHP auf dem Webserver ersetzt. Es wird dann nicht auf Einstellungen aus dem Kundenmenü zurückgegriffen.
      Ah, das war mir so tatsächlich nicht klar, das ergibt Sinn, vielen Dank für die Klarstellung.

      Grüße und Danke
      Philipp

      Kommentar


        #4
        Zitat von phi__ Beitrag anzeigen

        Ah, das war mir so tatsächlich nicht klar, das ergibt Sinn, vielen Dank für die Klarstellung.
        Gerne und das ist tatsächlich etwas trickreich.

        Mit freundlichen Grüßen

        Nils Dornblut
        Blog - Facebook - Twitter
        Communitybetreiber: domainfactory GmbH
        Impressum / Pflichtangaben

        Kommentar

        Lädt...
        X