PHP 第31章 SOAP-ERROR PHP 第31章 SOAP-ERROR

2022-07-18

Parsing WSDL:Couldn’t load from “xxxxxxx” 解决方案

)、问题来源

用 php 的 soapclient 连接第三方的 webservice,是 https 的,连接报错 SOAP-ERROR: Parsing WSDL:Couldn’t load from “xxxxxxx”

)、解决方法

(1)、首先排查 php 的 soap扩展 、openssl扩展

(2)、排除第三方对本服务器的IP限制

(3)、最后怀疑是 https 需要ssl验证,而本机没有 pem 文件

可以通过如下设置,忽略ssl验证

①、verify_peer:指定是否验证ssl,默认为true ,将verify_peer设为false

②、另外,允许引用外部xml实体 :加libxml_disable_entity_loader(false);

libxml_disable_entity_loader(false);
$opts = array(
    "ssl"   => array(
            "verify_peer"          => false
        ),
    "https" => array(
            "curl_verify_ssl_peer"  => false,
            "curl_verify_ssl_host"  => false
     )
);
$streamContext = stream_context_create($opts);
$client = new SoapClient("https://urlToSoapWs",
  array(
      "stream_context"    => $streamContext
  ));
阅读 796