2016-05-02 9 views
1

In meinem php.ini ich gesetzt habe:php.ini 'date.timezone' hat keine Wirkung

date.timezone = "Etc/UTC" 

und die Zeit des Servers ist UTC + 0 auch, aber wenn ich versuche, dieses Skript die Zeitzone zu erhalten:

<?php print(date_default_timezone_get()); ?> 

es gibt

Europe/Berlin

das ist UTC+2 und nicht UTC+0 und ich sehe nicht, wie es dort ankommt.

Gerade clearify:

  • Ich habe die die richtige Datei auf dem richtigen Pfad und neu gestartet meinen Server
  • Ich will nicht meine Skripte gespeichert ändern, weil ich schon date() Weise oft verwendet
  • ich möchte die Zeit UTC+0 für PHP sein, nur durch eine Änderung der Konfiguration
  • ich will es immer sein UTC+0 an, ignorieren Sommer-/Winter
+1

drucken (date_default_timezone_get()) überprüfen Sie dies vor Ihrer Operation –

+0

Sommer/Winterzeit? – Andreas

+0

Europa/Berlin ist nicht UTC –

Antwort

0

In den Kommentaren, Minesh Patel sagte mir, zu überprüfen, ob es etwas gibt, das Überschreiben meine Option, also suchte ich durch meine php.ini für Europe/Berlin und es stellt sich heraus, gab es eine andere date.timezone -Eintrag, der es überschrieben.

1

Haben Sie die Umgebungsvariable "TZ" für Ihren Webserver-Benutzer überprüft? Wenn es gesetzt ist, würde die date.timezone php.init Einstellung nicht wie erwartet funktionieren, wie in den php manual erklärte:

date.timezone Zeichenfolge Die Standard-Zeitzone wird von allen Datums-/Zeitfunktionen verwendet. Vor PHP 5.4.0 funktionierte das nur, wenn die TZ-Umgebungsvariable nicht gesetzt war. Die Reihenfolge, in der die Zeitzone verwendet wird, wenn keine explizit erwähnt wird, wird auf der Seite date_default_timezone_get() beschrieben.

+0

Ich habe wirklich keine Ahnung, was eine "TZ" Variable ist und wo sie zu finden ist ._. – timmyRS

+0

Wenn Sie unter Linux sind, geben Sie einfach 'echo $ TZ' ein, um die aktuelle Einstellung zu sehen, oder 'export TZ = UTC', um es zu setzen. Aber Sie müssen es als Webserver-Benutzer tun, bevor Sie den Server starten. Dies geschieht normalerweise in einem Init-Skript beim Booten. Probieren Sie 'redhat-config-date' oder' dpkg-reconfigure tzdata', um es zu konfigurieren (abhängig von der Linux-Distribution, die Sie verwenden) –

2

Diese Linie ist sicherlich der richtige Ort, um die Standard Zeitzone zu ändern.

  1. Ändern Sie tatsächlich die richtige php.ini? Einige Setups können mehrere INI-Dateien enthalten. Führen Sie phpinfo(); und überprüfen Sie Loaded Konfigurationsdatei um zu sehen, ob es diese Datei ist.

  2. Überprüfen Sie, ob in der Datei keine weiteren Definitionen dieses Parameters vorhanden sind. Es überschreibt möglicherweise, was Sie festgelegt haben, wenn Sie es einfach überall kopieren.

  3. Überprüfen Sie, ob der Code nicht das überschreibt, was Sie in der INI-Datei festgelegt haben. date_default_timezone_set() setzt es (und überschreibt) in PHP.

  4. Überprüfen Sie phpinfo() für weitere Informationen darüber, was die aktuelle Zeitzone ist.

+0

Die Zeitzone ist UTC + 2 (Europa/Berlin) aus irgendeinem Grund und ich weiß nicht, was ist überschreibe es. Auch die Konfiguration ist korrekt. – timmyRS

+0

@timyRS was war das Problem? –

+0

@MineshPatel schrieb es in meiner Frage. Es gab wirklich etwas in der Config, das es überschrieb ... – timmyRS

0

Ich schlage vor, Sie diese Liste Bezug zu nehmen, um Ihre Zeitzone zu wählen:

PHP timezones

Warnung: Sie nicht der Zeitzonen in dem folgenden Link aufgeführt verwenden, sie nur existieren für rückwärtskompatibel Gründen neben UTC:

PHP timezones only for backward compatible reasons

Es wird dringend empfohlen, dass Sie die richtige Zeitzone für Ihren Standort, wie Europe/Berlin verwenden:

date.timezone = "Europe/Berlin" 
+0

Mein Problem ist, dass die Zeitzone bereits Europa/Berlin ist, aber SOLLTE UTC + 0 sein – timmyRS