По моему мнению, ваша проблема не имеет ничего общего с Docker.
Вы создали TrinityListener , который прослушивает kernel.exception событие (a GetResponseForExceptionEvent объект на самом деле).Когда происходит это событие, выполняется метод onKernelException , и необычно генерировать исключение здесь, не перехватывая его должным образом.Ваше первоначальное исключение является экземпляром \ SoapFault , поэтому вы бросаете BadRequestHttpException , это нормально, но исключение не перехватывается.В этом проблема, ошибка очень явная, вы должны использовать try ... catch , чтобы исправить это.
Исключение из документации php:
При возникновении исключения код, следующий за оператором, не будет выполнен, и PHP попытается найти первый соответствующий блок catch.Если исключение не перехвачено, PHP-фатальная ошибка будет выдана с сообщением «Uncaught Exception ...», если обработчик не был определен с помощью set_exception_handler ().
Таким образом, вы можете исправить свою проблему следующим образом:
class TrinityListener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
KernelEvents::EXCEPTION => array('onKernelException', -64),
);
}
public function onKernelException(GetResponseForExceptionEvent $event)
{
try {
if (($e = $event->getException()) instanceof \SoapFault) {
throw new BadRequestHttpException($e->getMessage());
}
} catch (BadRequestHttpException $e) {
$response = new Response();
$message = sprintf(
'Error %s with code: %s',
$exception->getMessage(),
$exception->getCode()
);
$response->setContent($message);
$response->setStatusCode($exception->getStatusCode());
$event->setResponse($response);
}
}
}