Php Yii2-致命错误,尝试捕获不工作
我想在yii2项目中与SoapClient合作。但我需要用try-catch管理错误。但那不行 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
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);