noknok: DateTime in PHP 5.3

Kürzlich habe ich PHP 5.3 installiert und nun studiere ich die Sprache in der CLI version, also als Shell-Script-Sprache auf meinem Ubuntu-System. Ich weiss nicht ob es an dieser Konfiguration liegt, aber es taucht nun folgendes Problem auf bei Code, der früher funktioniert hat.

Wenn ich nämlich eingebe

$d = new DateTime();

dann gibt er mir folgende Fehlermeldung

Fatal error: Uncaught exception 'Exception' with message
  'DateTime::__construct(): It is not safe to rely on the system's timezone
  settings. You are *required* to use the date.timezone setting or the
  date_default_timezone_set() function. ...

Das verstehe ich nicht, und aus dem php.net Manual werde ich auch nicht schlau. Muss man nun immer erst eine standard Zeitzone vorab deklarieren? Die ist doch sowieso eingestellt im System, oder nicht?

  1. Muss man nun immer erst eine standard Zeitzone vorab deklarieren?

    Ja.
    Entweder über die php.ini oder über http://de.php.net/manual/de/function.date-default-timezone-set.php

  2. Hi!

    Muss man nun immer erst eine standard Zeitzone vorab deklarieren? Die ist doch sowieso eingestellt im System, oder nicht?

    Nicht. Sonst gäbe es die Meldung nicht. Schau in deine php.ini, Abschnitt [Date] Eintrag date.timezone.

    Lo!

  3. Moin!

    Die ist doch sowieso eingestellt im System, oder nicht?

    Du bekommst die Notiz: "It is not safe to rely on the system's timezone"

    Meine geringen englisch-Kenntnisse sagen mir, dass die PHP-Entwickler diese Übernahme als unsicher erachten - wohl deshalb, weil der webmaster nicht immer weiß was der Server-Administrator gerade so im Schilde führt. Stell Dir vor, der verändert, damit er die Logfiles "besser lesen" kann, die Zeitzone des Servers z.B. auf den Westen der USA und dann wetten tausende englische Fans via Webapplikation nach dem Pferderennen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

  4. Hallo fastix, dedlfix, und Patrick Figel,

    Vielen herzlichen Dank für die schnellen und guten Tipps.
    Die Sache mit der Konfiguration ist ein wenig kompliziert, denn ich stelle fest, dass das Apache-Modul noch mit 5.2.6, das CLI aber schon mit 5.3 läuft, und entsprechend gibt es eine Vielzahl von Konfigurations-Dateien.
    Zumindest weiss ich jetzt, wo ich suchen muss.

    Nochmals vielen Dank

    1. Hi!

      Die Sache mit der Konfiguration ist ein wenig kompliziert, denn ich stelle fest, dass das Apache-Modul noch mit 5.2.6, das CLI aber schon mit 5.3 läuft, und entsprechend gibt es eine Vielzahl von Konfigurations-Dateien.

      Die Ausgabe von phpinfo() (erster Block) sagt dir, welche Konfigurationsdatei(en) gelesen wurden. Ruf sie also in der jeweiligen Umgebung auf, dann weißt du wo du die zuständigen Dateien findest.

      Lo!

    2. Moin!

      date_default_timezone_set() ist Dein Freund.

      Die Zonen findest Du hier.

      Ein: date_default_timezone_set('Europe/Berlin'); behebt also Dein Problem vor allem auch dann, wenn Du selbst auf die php.ini keinen Einfluss hast.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix

    3. Hi,

      Die Sache mit der Konfiguration ist ein wenig kompliziert,

      Nein, ist sie nicht.

      denn ich stelle fest, dass das Apache-Modul noch mit 5.2.6, das CLI aber schon mit 5.3 läuft, und entsprechend gibt es eine Vielzahl von Konfigurations-Dateien.

      Kann dir furzegal sein, denn die Meldung hat dir noch eine weitere Möglichkeit genannt, diese Option im Script zu setzen.

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  5. Hi,

    You are *required* to use the date.timezone setting or the
      date_default_timezone_set() function. ...

    Das verstehe ich nicht, und aus dem php.net Manual werde ich auch nicht schlau.

    Wenn weder deine Englisch-Kenntnisse ausreichend sind, um diese triviale Aussage zu übersetzen, noch du in der Lage bist, das Manual zu verstehen - dann solltest du an diesen Fähigkeiten arbeiten, und zwar massiv, bevor du weiter programmierst.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]