Bir hata kaynağını izleme, ben bu kod parçası geliştirme ve canlı sunucularında farklı davrandığını fark ettik:
<?php
ini_set('log_errors', FALSE);
ini_set('display_errors', TRUE);
error_reporting(E_ALL ^ E_STRICT);
var_dump(date_default_timezone_set('Europe/Madrid'));
try{
$dt = new DateTime('2010-12-01');
var_dump($dt);
}catch(Exception $e){
var_dump($e);
}
Benim dev kutusu (PHP/5.3.0) Ben beklenen çıktıyı alıyorum:
bool(true)
object(DateTime)#1 (3) {
["date"]=>
string(19) "2010-12-01 00:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Madrid"
}
Canlı sunucusu (PHP/5.2.14) ben boş bir nesne olsun:
bool(true)
object(DateTime)#1 (0) {
}
Zaten olağan şüpheliler (eksik varsayılan saat dilimi, non-parseable tarih dizesi ...) atılır ettik. Bu kod iki sunucularda aynı çıkışı var:
<?php
ini_set('log_errors', FALSE);
ini_set('display_errors', TRUE);
error_reporting(E_ALL ^ E_STRICT);
var_dump(date_default_timezone_set('Europe/Madrid'));
$ts = strtotime('2010-12-01');
var_dump($ts, date('r', $ts));
Baskılar:
bool(true)
int(1291158000)
string(31) "Wed, 01 Dec 2010 00:00:00 +0100"
Ben gerçekten belirgin bir şey eksik?