在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上运行,如果它有任何区别。
答案 0 :(得分:13)
这已经讨论过了:
Rasmus自己提出了以下解决方案:
<?php
try {
$x = @new SoapClient("non-existent.wsdl",array("exceptions" => 1));
} catch (SoapFault $E) {
echo $E->faultstring;
}
echo "ok\n";
答案 1 :(得分:0)
请参阅此主题How do I catch a PHP Fatal Error
基本上你无法从致命的错误中恢复,但是你可以在注册关机功能时为用户提供更好的体验
register_shutdown_function('handleShutdown');
function handleShutdown(){
$error = error_get_last();
if($error !== NULL){
echo "Sorry for the inconvenience, an error just occurred.";
}
}