繁体   English   中英

PHP Soap SSL 错误 [WSDL] SOAP-ERROR

[英]PHP Soap SSL Error [WSDL] SOAP-ERROR

我在使用 SOAP 和 PHP 时遇到了一些问题。 我正在运行 PHP 7,但由于 comodo SSL 证书而出现问题。 代码如下:

 $contextOptions = array(
'ssl' => array(
     'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true

)
);
$sslContext = stream_context_create($contextOptions);

$client = new SoapClient('https://XXXX.com/api/v2_soap/?wsdl', array('stream_context' => $sslContext));

$session = $client->login('apiUser', 'apiKey');
$filter = array('filter' => array(array('key' => 'status', 'value' => 'processing')));
$result = $client->salesOrderList($session, $filter);

var_dump ($result);

似乎每次连接都失败

Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL:Couldn't load from 'https://xxxxx.com/api/v2_soap/?wsdl' : failed to load external entity

如果我使用 -k 但没有使用 SSL 上的错误,curl 可以工作,我认为通过执行上下文选项,它应该跳过 ssl 错误并继续。

谢谢

看来您的 SSL 情况可以改善很多,以下是您可以尝试的想法,它们可能会提供解决问题的方法:

  1. 实现一个简单的代理服务,使用任何工具,例如 nginx 或 python 甚至 golang,将 https 流量转换为 http 并去除错误,并位于所有流量的中间,这将允许您查看和调试容易通过的东西。

  2. 确保 PHPINFO 工具报告您当前的 php 安装支持 libssl 和 https,检查 libeay 是否也存在,如果在 Windows 上,您可能需要一些 dll。

  3. 查看您当前的 php.ini 并确定您是否有权启用扩展,如果是,请尝试通过取消注释允许 PHP 中的 https 支持的注释行来安装扩展,如果您无权访问 php 设置(可能是共享的主机)然后:

  4. 考虑通过在 Web 服务器中的某处制作 php 二进制文件的副本来直接调用 php 可执行文件,然后使用自定义 php.ini 文件直接在服务器中为您的特定 php 副本启用所有必要的 php 扩展; 记住php本身也可以用作Web Server。

  5. 记住对 php 配置的任何更改都需要重新启动 apache。

  6. 如果所有其他方法都失败了,您始终可以使用 passthru() 或 exec 直接从 PHP 调用 curl。

  7. 如果你感到特别绝望,你总是可以学习如何手动编译 PHP 并启用你需要启用的任何东西,但我承认这有点矫枉过正,这个练习会教你很多关于 PHP 内部的知识,并且会在未来帮助你,如果您曾经决定编写自己的 PHP 扩展。

玩得开心解决问题,不要忘记报告你是如何做到的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM