Вызов неопределенного метода DateTime :: format, но DateTime работает - PullRequest
0 голосов
/ 15 января 2019

Я внезапно получил эту действительно странную ошибку в устаревшем приложении, которое мы поддерживаем.

Uncaught Error : вызов неопределенного метода DateTime :: format () в ПУТЬ / 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 работает как следует.

Он перестал работать в одночасье (что я нахожу действительно странным, и не уверен, верю ли я в это).

Есть идеи о таких странных ошибках?

1 Ответ

0 голосов
/ 15 января 2019

Мы поняли, и ответ совсем не удовлетворяет:

Ошибка не была надежно повторена. Это было там с перерывами. Это уже повод для подозрений.

После некоторого копания было больше процессов, сообщающих о неустойчивом поведении, и кажется, что проблема с памятью является основной причиной. После перехода на «свежий» сервер все проблемы исчезли.

Так что, очевидно, объект DateTime не был полностью выделен? Указатель функции форматирования был перезаписан или что-то в этом роде. Но причиной была неисправная память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...