我只想在这个步骤中添加一个可能有用的提示 . 它应该检查的东西除了已经写在这里的其他有用的答案 .
如果从PHP 5.5或更早版本升级到PHP 5.6或PHP7,您可能会看到此错误 . 在较新版本的PHP中,soap的默认设置是验证远程对等体(以及它应该是) . 如果您从HTTPS提取WSDL或具有HTTPS endpoints ,那么它将检查CA.如果失败,您将收到此特定错误 .
有两种方法可以解决这个问题 .
1)最安全的选择是验证对等体 . 在ubuntu系统上,您可以将证书复制到 /usr/local/share/ca-certificates/ 并以root身份运行 update-ca-certificates .
2)或者你可以禁用验证,这是一个如何做的例子 . - 这通常不是首选方案,但如果问题紧急,它可以提供快速解决方案 . 不过,请不要马虎与你的安全 .
$soapClient = new SoapClient($wsdl_url, array(
//'trace' => 1,
'stream_context' => stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true //can fiddle with this one.
)
))
));
我发现在SOAP方面,PHP文档有点碎片化 . 特别是SOAP WSSE .