解决PHP SOAP-ERROR问题的方法:首先通过“openssl_get_cert_locations”获取默认证书路径;然后下载证书;最后保存到目录即可解决PHP SOAP-ERROR问题。
怎么解决PHP SOAP-ERROR问题?
解决 PHP SOAP-ERROR: Parsing WSDL: Couldn't load from 问题PHP Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://xxxx.com'.
这个错误是我从PHP5.6升级到php7.2的时候遇到的问题,从google搜索后发现很多人出现这个问题,一直没有找到好的结果,知道一个文章里面找到下面的代码$opts = array(
'http' => array(
'user_agent' => 'PHPSoapClient'
),
'ssl' => array(
'verify_peer' => false
),
);
$context = stream_context_create($opts);
$requestUrl = 'https://labelserver.endicia.com/LabelService/EwsLabelService.asmx?wsdl';
$client = new SoapClient($requestUrl, array("trace" => 1, "cache_wsdl" => WSDL_CACHE_NONE, "exception" => 1, 'stream_context' => $context));
问题的主要是 SSL认证失败
通过openssl_get_cert_locations 获取默认证书路径。openssl_get_cert_locations()
rray(8) {
["default_cert_file"]=>
string(21) "/usr/lib/ssl/cert.pem"
["default_cert_file_env"]=>
string(13) "SSL_CERT_FILE"
["default_cert_dir"]=>
string(18) "/usr/lib/ssl/certs"
["default_cert_dir_env"]=>
string(12) "SSL_CERT_DIR"
["default_private_dir"]=>
string(20) "/usr/lib/ssl/private"
["default_default_cert_area"]=>
string(12) "/usr/lib/ssl"
["ini_cafile"]=>
string(0) ""
["ini_capath"]=>
string(0) ""
下载证书,并保存到目录,后问题得到解决
更多相关知识,请访问PHP中文网!
本文原创发布php中文网,转载请注明出处,感谢您的尊重!