2017-11-07 1 views
0

SOAPとPHPにいくつか問題があります。私はPHP 7を実行していますが、コモドSSL証明書のために問題が発生しています。以下のコードは次のとおりです。PHP SOAP SOAPエラー[WSDL] SOAP-ERROR

$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); 

私がすることなく、SSLではなく、エラーを-k使用する場合

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

カールが働く接続で毎回失敗しているようだ、私は思っているコンテキストオプション、それを実行して、 sslエラーをスキップして実行してください。あなたのSSLの状況はここで、多くのことを改善することができ現れ

おかげ

+0

プロダクションでSLLチェックを無効にすることは非常に悪い考えです。このセットアップは、開発にのみお勧めできます。 をテストすると、同じURLでfile_get_contents()を試して結果を表示できますか? –

+0

こんにちは、返信いただきありがとうございます。 file_get_contents():暗号化を有効にできませんでした\ – Adam

答えて

0

は、問題への解決策を提供することができる、試すことができるのアイデアがあります:

  1. は、いずれかを使用して、簡単なプロキシサービスを実装しますhttpsトラフィックをhttpに変換してエラーを取り除き、すべてのトラフィックの真ん中に座っているnginxや多分Pythonやgolangのようなツールでは、トラフを容易に見てデバッグすることができます。

  2. PHPINFOツールで現在のPHPインストールでlibsslとhttpsがサポートされていることを確認してください。もしlibeayが存在するかどうかを確認してください。

  3. 現在のphp.iniを確認し、拡張機能を有効にするためのアクセス権があるかどうかを確認します。phpにアクセスできない場合は、PHPでhttpsサポートを許可するコメント行のコメントを外して拡張機能をインストールしてください

  4. Webサーバーのどこかにphpバイナリのコピーを作成し、必要に応じてすべての必要なPHP拡張機能を直接有効にすることを検討してください。カスタムphp.iniファイルを使用して、PHPコピーを作成します。 PHP自体もWebサーバーとして使用できることを覚えておいてください。

  5. PHPの設定を変更するには、Apacheの再起動が必要です。

  6. 他のすべてが失敗した場合、passthru()またはexecを使用してPHPからcurlを直接呼び出すことができます。

  7. もしあなたが特に必死に感じているのであれば、手作業でPHPをコンパイルし、必要なものを有効にする方法を学ぶことができますが、これは過度のことであると認めます。あなた自身のPHP拡張を書くことを決断したのであれば、将来的には、

問題を解決して楽しくお過ごしください