2013-05-09 85 views
0

我最近将一个站点从共享主机迁移到虚拟专用服务器。 在共享主机我有PHP 5.2,并在VPS我有PHP 5.3.3。 此迁移后,DateTime类停止响应。 以下代码用于正常工作,但现在我只获取$ test输出。DateTime未响应服务器更改

$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"; 

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

EDIT(php.ini中):

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

检查错误日志,并确保您使用'E_ALL'错误日志记录级别 – zerkms 2013-05-09 04:29:24

+0

error_reporting = E_ALL&〜E_DEPRECATED – Manatax 2013-05-09 05:03:29

+0

那么错误日志?如果PHP死了 - 这是有原因的, – zerkms 2013-05-09 05:04:51

回答

1

我找到了解决我的问题。显然,对这个类5.3的很多工作都完成了。主要是为了支持欧洲和美国的日期风格,并增加对更多格式的支持。这必须包含构造函数的意外更改,因为它不能识别我以前的格式。 解决的办法是去为create from formatISO 8601

$test = $vYear.'-'.$vMonth.'-'.$vDay; 
$date = date_create_from_format("Y-n-j",$test); 
$vBday = date_format($date, 'Y-m-d H:i:s'); 
-1

你检查的php.ini如果它的配置正确

+0

是的,我已经这么做了 – Manatax 2013-05-09 05:57:59

0

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

+0

原来的问题快乐的3岁生日! :P – Manatax 2016-05-15 02:29:38