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