Php Yii2-致命错误,尝试捕获不工作

Php Yii2-致命错误,尝试捕获不工作,php,yii2,try-catch,Php,Yii2,Try Catch,我想在yii2项目中与SoapClient合作。但我需要用try-catch管理错误。但那不行 yii2代码示例: class SiteController extends Controller { public function actionIndex() { try{ new \SoapClient('a',['cache_wsdl' => WSDL_CACHE_MEMORY]); }catch(\SoapFau

我想在yii2项目中与SoapClient合作。但我需要用try-catch管理错误。但那不行

yii2代码示例:

class SiteController extends Controller
{
    public function actionIndex()
    {
        try{
            new \SoapClient('a',['cache_wsdl' =>  WSDL_CACHE_MEMORY]);
        }catch(\SoapFault $e){
            echo '***************';
        }
    }
}
yii框架输出:

PHP致命错误–yii\base\ErrorException SOAP-Error:解析WSDL: 无法从“a”加载:未能加载外部实体“a”

但是在test.php(无yii框架)中:

输出

***************

为什么不工作但是在单个php脚本和打印星星中工作。在我用谷歌搜索同一个问题时帮助我的解决方案:

try {
    $wsdl = 'http://test.com/test/ws/Landing/?wsdl';
    simplexml_load_file($wsdl);
    $short_link = new \SoapClient($wsdl, $options);
} catch (\Throwable $e) {
    var_dump($e);
}
资料来源:


如果必须执行授权,则可以使用curl

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "{$login}:{$password}");
curl_setopt($ch, CURLOPT_SSLCERT, $cert_path);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: text/xml; charset=utf-8"]);
$result = curl_exec($ch);
curl_close($ch);
你应该加上

define('YII_ENABLE_ERROR_HANDLER', false);

这对我很有效

try catch抓不到致命的鱼。你犯了什么错误?(注意,除非它是一个可捕获的致命错误,但您不会说。)似乎它是一个可捕获的致命错误,因为在单个php脚本中尝试捕获是可行的,但在Yi2框架中不起作用。可捕获和不可捕获的区别是什么?如果我记得的话,可捕获的意味着命运是你可以用自定义错误处理程序捕获的,不可捕获的则不管你做什么,随时终止进程。是的,这是可捕获的。为什么在yii中不工作?不知道,您还没有向我们显示实际错误。请参阅
define('YII_ENABLE_ERROR_HANDLER', false);