PHP код работает в PHP 7.2, а в PHP 5.6 вызывает фатальную ошибку, почему?
В php 5.4 вроде еще не было указания типа для return, это c 7 версии появилось
function get_first_post_image(string $post_content): string
Надо заменить на
function get_first_post_image(string $post_content)

Вот этого тоже не было
return $img->item(0)->getAttribute('src') ?: $defaultImage;
заменяется на 
return $img->item(0)->getAttribute('src') ? $img->item(0)->getAttribute('src') : $defaultImage;
Судя по ошибке у вас вообще не 5.6 а 5.3. В ней отсутствует возможность короткого объявления массивов.
// До 5.4
array('cat' => 81)
// После
['cat' => 81]
С кодом из примера та же ситуация. Возвращаемое значение (): string завезли только в седьмой версии. PHP 5.* такой синтаксис не поддерживает.