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):

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

Nun ein kleines Testscript ausprobiert:
… und das liefert mir die Ausgabe:

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

… 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
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):
Die Zeitzone in PHP ist Europe/Berlin. Steht so in PHP.INI:
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"; ?>
Wenn ich nun per phpinfo() gegenchecke (einfach die Zeile wieder reinkommentiert im time.php von da oben), siehe da:
… 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
Kommentar