0

我最近将一个站点从共享主机迁移到了虚拟专用服务器。在共享主机上我有 PHP 5.2,在 VPS 上我有 PHP 5.3.3。在此迁移之后,DateTime 类停止响应。以下代码过去可以正常工作,但现在我只得到 $test 输出。

$test = $vMonth.'/'.$vDay.'/'.$vYear;
echo $test;
$date = new DateTime($test);
if (!$date) {
    $e = date_get_last_errors();
    foreach ($e['errors'] as $error) {
        echo $error."\n";
    }
    echo "step1";
} else {
    echo $date;
    echo "step2";
}
$vBday = date_format($date, 'Y-m-d H:i:s');
echo "Test0";

有谁知道这是否是一个已知问题?或者是否有解决方法?谢谢!

编辑(php.ini):

error_reporting = E_ALL & ~E_DEPRECATED
log_errors = On
display_errors = On
error_log = /tmp/php_errors.log
4

2 回答 2

1

我找到了解决我的问题的方法。显然,这个类在 5.3 上做了很多工作。主要是为了支持欧洲+美国的日期样式,并增加对更多格式的支持。这一定包括对构造函数的意外更改,因为它无法识别我以前的格式。解决方案是从格式ISO 8601创建:

$test = $vYear.'-'.$vMonth.'-'.$vDay;
$date = date_create_from_format("Y-n-j",$test);
$vBday = date_format($date, 'Y-m-d H:i:s');
于 2013-05-14T06:06:18.323 回答
0

检查 date.timezone 是否在 php.ini 上设置为正确的值。看起来在某些服务器(或 PHP 版本?)上是必要的......

于 2016-05-10T17:22:56.190 回答