【问题标题】:PHP Soap SSL Error [WSDL] SOAP-ERRORPHP Soap SSL 错误 [WSDL] SOAP 错误
【发布时间】:2018-04-19 23:17:42
【问题描述】:

我在使用 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

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

谢谢

【问题讨论】:

  • 在生产环境中禁用 SLL Check 是一个非常糟糕的主意,因此只能推荐用于开发的设置。作为测试,您可以在同一个 URL 上尝试 file_get_contents() 并显示结果吗?
  • 您好,感谢您的回复,我收到以下 file_get_contents():无法启用加密\

标签: php ssl soap magento-1.9


【解决方案1】:

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

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

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

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

  4. 1234563 ini 文件;记住php本身也可以用作Web Server。
  5. 记住对 php 配置的任何更改都需要重启 apache。

  6. 如果一切都失败了,您可以随时使用 passthru() 或 exec 从 PHP 中直接调用 curl。

  7. 1234563将来,如果您决定编写自己的 PHP 扩展。

玩得开心解决问题,别忘了报告你是怎么做的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多