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.
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
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%Tags und Links datetime php exception-handling timezone