PHP中的SoapClient错误回退

时间:2011-07-07 08:55:20

标签: soap soap-client php php-5.2

在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上运行,如果它有任何区别。

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.";
    }
}