Ist das ein php bug, oder stimmt etwas nicht mit meiner Zeitzone/PHP Einstellungen?
Den realen, vollständigen Inhalt der Datei:
<?php
error_reporting(E_ALL);
ini_set(display_errors, 'on');
try {
//$x = strtotime('blah');
$x = new DateTime('lol');
} catch ( Exception $e ) {
echo $e->getMessage();
}
Dem DateTime-Konstruktor akzeptiert einen string, der sollte eine exception werfen, wenn es nicht analysiert. Diese läuft problemlos auf meiner lokalen Maschine, sondern auf meinem remote-Server, die Ausnahme nicht gefangen ( und wieder, ich bin Verwendung von try/catch und der EXAKT GLEICHE code ):
Fatal error: Uncaught exception
'Exception' with message
'DateTime::__construct() [function.DateTime - ---construct]:
Failed to parse time string (lol) an
position 0 (l): Die Zeitzone konnte nicht
in der Datenbank' in
/var/www/html/site_com/rez/Datum.php:9
Stack trace: #0
/var/www/html/site_com/rez/date.php(9):
DateTime->__construct('lol') #1 {main}
geworfen in
/var/www/html/site_com/rez/date.php auf
Zeile 9
Einstellungen für die remote-server, wo die exception wird nicht abgefangen:
PHP Version 5.2.5
Datum date/time support enabled
"Olson" Timezone Database Version
2007.9 Zeitzone-Datenbank interne Standard-Zeitzone America/ChicagoDirective Local Value Master Value
Datum.default_latitude 31.7667 31.7667
Datum.default_longitude 35.2333 35.2333
Datum.sunrise_zenith 90.583333 90.583333
Datum.sunset_zenith 90.583333 90.583333
Datum.timezone kein Wert kein Wert
Meine lokale Einstellungen wo es funktioniert:
PHP 5.2.10
Datum date/time support enabled
"Olson" Timezone Database Version
0.system-Zeitzone-Datenbank interne Standard-Zeitzone-System/LocaltimeDirective Local Value Master Value
Datum.default_latitude 31.7667 31.7667
Datum.default_longitude 35.2333 35.2333
Datum.sunrise_zenith 90.583333 90.583333
Datum.sunset_zenith 90.583333 90.583333
Datum.timezone kein Wert kein Wert
Lokal, es fängt die Ausnahme ab und gibt die Fehlermeldung aus. Die date.timezone
auf beiden ist kein Wert.
Vielleicht ist es nur meine interne system der Zeitzonen, die ausgeschaltet sind? Meine lokale Kiste ist Ubuntu und meine Fernbedienung ist CentOS, Sie sind wahrscheinlich inkonsistent, aber nicht die PHP noch die Ausnahme abfangen?
Zur info ich kann nicht updaten, PHP auf der remote-box, da ich keine admin-Rechte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Wette ist auf einen PHP-Fehler. Ich weiß, dass PHP verwendet werden, um Probleme mit dem fangen von Ausnahmen in Konstruktoren, und das scheint das zu sein, was hier Los ist.
Weil es ein bug ist, sind Ihre Optionen
strtotime()
zu finden, das Datum oder, wenn Sie brauchen oder wollen Zugriff auf die Objekt-orientierten Stil derDateTime
, den Fehler abzufangen mitstrtotime()
Beispiel:
Nicht sicher über den genauen Punkt, sondern versuchen, die Einstellung der Zeitzone mit dieser Funktion:
Und sehen, ob das funktioniert.
Ich lief in ähnliche problem, in der Lage war zu beheben mit
Hoffe, dass jemand hilft.