Ist das ein PHP-Fehler oder stimmt etwas nicht mit meinen Zeitzonen / PHP-Einstellungen?

8

Der echte, vollständige Inhalt der Datei:

%Vor%

Der DateTime-Konstruktor akzeptiert eine Zeichenfolge, die eine Ausnahme auslösen sollte, wenn sie nicht analysiert werden kann. Dies funktioniert auf meinem lokalen Computer einwandfrei, aber auf einem meiner Remote-Server wird die Ausnahme nicht abgefangen (und ich wiederum bin mit try / catch und dem SAME EXACT-Code):

  

Fataler Fehler: Nicht abgefangene Ausnahme   'Ausnahme' mit Nachricht   'DateTime :: __ Konstrukt () [Funktion.DateTime --- Konstrukt]:   Fehler beim Parsen der Zeitzeichenfolge (lol) um   Position 0 (l): Die Zeitzone konnte nicht   in der Datenbank gefunden werden "in   /var/www/html/site_com/rez/date.php:9   Stapelverfolgung: # 0   /var/www/html/site_com/rez/date.php(9):   DateTime- & gt; __ Konstrukt ('lol') # 1 {Haupt}   hineingeworfen   /var/www/html/site_com/rez/date.php auf   Zeile 9

Einstellungen für den Remote-Server, bei dem die Ausnahme nicht abgefangen wird:

  

PHP Version 5.2.5

     

Datum Datum / Uhrzeit Unterstützung aktiviert   "Olson" Timezone Datenbankversion     2007.9 Timezone Database internal Zeitzone America / Chicago

     

Richtlinie lokaler Wert Masterwert   date.default_latitude 31,7667 31,7667   date.default_longitude 35.2333 35.2333   date.sunrise_zenith 90.583333 90.583333   date.sunset_zenith 90.583333 90.583333   date.timezone kein Wert kein Wert

Meine lokalen Einstellungen, wo es funktioniert:

  

PHP 5.2.10

     

Datum Datum / Uhrzeit Unterstützung aktiviert   "Olson" Timezone Datenbankversion     0.system Zeitzone Datenbank intern Standard Zeitzone System / Ortszeit

     

Richtlinie lokaler Wert Masterwert   date.default_latitude 31,7667 31,7667   date.default_longitude 35.2333 35.2333   date.sunrise_zenith 90.583333 90.583333   date.sunset_zenith 90.583333 90.583333   date.timezone kein Wert kein Wert

Lokal fängt es die Ausnahme und druckt den Fehler aus. Die date.timezone auf beiden ist kein Wert.

Vielleicht sind nur die Zeitzonen meines internen Systems ausgeschaltet? Meine lokale Box ist Ubuntu und meine Fernbedienung ist CentOS, sie sind wahrscheinlich inkonsistent, aber sollte PHP nicht noch die Ausnahme abfangen?

Zu Ihrer Information: Ich kann PHP auf der Remote-Box nicht aktualisieren, da ich keine Administratorrechte habe.

    
meder omuraliev 15.02.2010, 05:23
quelle

3 Antworten

10

Ich wette auf einen PHP-Bug. Ich weiß, dass PHP Probleme mit dem Abfangen von Ausnahmen hatte, die in Konstruktoren geworfen wurden, und das scheint zu sein, was hier vor sich geht.

Da es sich um einen Fehler handelt, sind Ihre Optionen

  1. Aktualisieren Sie die PHP-Version des Servers; Du hast gesagt, das ist keine Option
  2. Verwenden Sie strtotime() , um das Datum zu finden, oder, wenn Sie Zugriff auf den objektorientierten Stil von DateTime benötigen oder wollen, fangen Sie den Fehler mit strtotime() ab.

Zum Beispiel:

%Vor%     
Frankie 15.02.2010, 12:43
quelle
1

Sie sind sich über das genaue Problem nicht sicher, aber versuchen Sie, die Zeitzone mit dieser Funktion einzustellen:

%Vor%

Und sehen Sie, ob das funktioniert.

    
Sarfraz 15.02.2010 06:01
quelle
0

Ich stieß auf ein ähnliches Problem, konnte mit

beheben %Vor%

Ich hoffe, dass es jemandem hilft.

    
Hari K T 13.06.2014 09:08
quelle