Откат ошибки SoapClient в PHP
В PHP, если вы пытаетесь создать новый экземпляр SoapClient
и WSDL недоступен (сервер отключен или что-то еще), выдается фатальная ошибка PHP:
Неустранимая ошибка: SOAP-ОШИБКА: синтаксический анализ WSDL: не удалось загрузить с " http://example.com/servlet/app/SomeService?wsdl ": не удалось загрузить внешнюю сущность " http://example.com/servlet/app/SomeService?wsdl "
Фатальные ошибки в PHP, насколько я знаю, не исправимы.
Есть ли способ отступить от этого? Можно ли как-то избежать этой фатальной ошибки?
Изменить: я должен сказать, что я работаю на PHP 5.2, если это имеет какое-либо значение.
2 ответа
Это уже обсуждалось:
Сам Расмус предложил следующее решение:
<?php
try {
$x = @new SoapClient("non-existent.wsdl",array("exceptions" => 1));
} catch (SoapFault $E) {
echo $E->faultstring;
}
echo "ok\n";
Посмотрите эту тему Как поймать PHP-фатальную ошибку
Как правило, вы не можете восстановиться после фатальной ошибки, но вы можете предоставить пользователю лучший опыт при регистрации функции выключения
register_shutdown_function('handleShutdown');
function handleShutdown(){
$error = error_get_last();
if($error !== NULL){
echo "Sorry for the inconvenience, an error just occurred.";
}
}