簡體   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