10

在 PHP 中,如果您尝试实例化一个 new SoapClient,并且 WSDL 不可访问(服务器关闭或其他),则会引发 PHP 致命错误:

致命错误:SOAP-ERROR:解析 WSDL:无法从“ http://example.com/servlet/app/SomeService?wsdl ”加载:无法加载外部实体“ http://example.com/servlet/app /SomeService?wsdl "

据我所知,PHP 中的致命错误是不可恢复的。

有什么办法可以回退吗?能否以某种方式避免这种致命错误?


编辑:我应该说我在 PHP 5.2 上运行,如果它有什么不同的话。

4

2 回答 2

13

这已经讨论过了:

拉斯穆斯本人提出了以下解决方案:

<?php  
try {  
    $x = @new SoapClient("non-existent.wsdl",array("exceptions" => 1));  
} catch (SoapFault $E) {  
    echo $E->faultstring; 
}  
echo "ok\n";
于 2011-07-07T09:05:11.043 回答
0

请参阅本主题如何捕获 PHP 致命错误

基本上您无法从致命错误中恢复,但您可以在注册关闭功能时为用户提供更好的体验

register_shutdown_function('handleShutdown');
function handleShutdown(){
    $error = error_get_last();
    if($error !== NULL){
        echo "Sorry for the inconvenience, an error just occurred.";
    }
}
于 2011-07-07T09:03:51.903 回答