PHP错误提示SOAP-ERROR: Parsing WSDL: Couldn't load from的解决办法

PHP使用 SOAP 处理接口项目时,线下测试环境是没问题的,移植到线上后就报错了。

错误提示如下:

Fatal error:Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://xxxx.com/MXSE_beta.wsdl'

各种搜索后,我们来一一排查各种方案。

首先打印一下接口,看能否正常访问

echo file_get_contents($wsdl);
die();

接着排查一下 PHP 的 openssl 扩展是否开启,查看 php.ini 如下配置,去掉前边的 ; 即可。

;extension=php_openssl.dll

最后方案也可尝试一下,就是在调用 api 文件的开头处,添加如下代码

libxml_disable_entity_loader(false);

禁止从外部加载XML实体,设为true就是禁止,目的是防止XML注入攻击。