httpsホストのfile_get_contentsは、特定のホスト(一部の会社のテストAPIサーバー - ホワイトリストに登録されているIP、テストするURLを指定することはできません)を除いて、正常に動作します。これは、ロードされたhttpsモジュールやその他の初期設定の間違いを排除します。file_get_contentsはverify_peer => falseを無視していますか?
私は複数のPHPインストールで、すべてv5.3.3,32ビット、Debian 32ビットでテストしました。
要求はcURLで動作しますが、設定する場合はcurl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
です。ただし、file_get_contentsのコンテキストにverify_peer"=>false
を設定しても差はありません。 file_get_contentsで
、まったく同じリクエスト(同じURL、同じXMLのPOSTデータ)SSLで失敗します。
$arrContextOptions=array(
"http" => array(
"method" => "POST",
"header" =>
"Content-Type: application/xml; charset=utf-8;\r\n".
"Connection: close\r\n",
"ignore_errors" => true,
"timeout" => (float)30.0,
"content" => $strRequestXML,
),
"ssl"=>array(
"allow_self_signed"=>true,
"verify_peer"=>false,
),
);
file_get_contents("https://somedomain:2000/abc/", false, stream_context_create($arrContextOptions));
:ピアによって接続がリセットされました。
誰かがfile_get_contentsでこれを見つけましたか? どのようにデバッグするのですか?
をインストールするには、falseに 'allow_self_signed'を設定してみてくださいましたか? – Repox
同じエラーが発生しました。 –
なぜcURLを使用しないのですか? –