У меня возникли трудности с обработкой ошибок и исключений на моем сервере PHP Soap. Иногда ошибки/исключения перехватываются моими обработчиками ошибок/исключений, а иногда нет. Это сводило меня с ума, но теперь я смог создать небольшой пример, иллюстрирующий проблему. Надеюсь, кто-нибудь сможет понять поведение и дать совет, что делать.
Рассмотрим следующий php-файл, в котором запущен мыльный сервер:
При раскомментировании первого исключения (1) и отправке запроса на сервер SOAP будет создан файлException.txt с следующее содержание:
Uncaught exception: qwer
Раскомментировав второе исключение (2) и отправив запрос на сервер SOAP, будет создан файлException.txt с следующее содержание:
Uncaught exception: asdf
Раскомментировав третье исключение (3) и отправив запрос на сервер SOAP, будет создан файл исключения.txt с следующее содержание:
Uncaught exception: bar
При раскомментировании четвертого исключения (4) и отправке запроса на мыльный сервер файлException.txt не будет создан! Но файл response.txt будет создан со следующим содержимым:
SOAP-ENV:Serverfoo
Странно то, что четвертое исключение никогда не достигает обработчика исключений. Вместо этого сообщение об исключении отправляется клиенту как ошибка мыла. Кто-нибудь может понять, почему? Я использую PHP 7.1.11.
Для тех, кто хочет попробовать, вот простой клиент PHP Soap. Просто измените http://www.example.com/server.php так, чтобы он указывал на описанный выше php-файл сервера SOAP.
Подробнее здесь: https://stackoverflow.com/questions/491 ... exceptions