在我们维护的旧版应用程序中,我突然遇到了一个非常奇怪的错误。
未捕获的错误:调用未定义的方法DateTime :: format() PATH /helpers.php:54
我的相关代码是这样:
function custom_date_format($str, $format=false){
if(!$format){
$format ="j M Y";
}
$date = DateTime::createFromFormat('d-m-Y', $str);
if($date){
return $date->format($format); // lineno 54
}
return '';
}
服务器正在运行PHP 7,并且DateTime::createFromFormat
似乎在工作,因此DateTime
对象正在正常工作。
它在一夜之间停止工作(我发现这很奇怪,不确定我是否相信)。
有这么奇怪的错误的主意吗?
答案 0 :(得分:0)
我们弄清楚了,答案根本不令人满意:
该错误无法以可靠的方式重复。那里是断断续续的。这已经引起了怀疑。
进行一些挖掘后,发现有更多的进程报告行为异常,并且看来内存问题是根本原因。迁移到“新”服务器后,所有问题都消失了。
那么显然DateTime对象没有以某种方式完全分配?格式函数指针被覆盖或其他内容。但是错误的内存是造成它的原因。