https ホストを使用した file_get_contents は、特定のホストを除いて問題なく動作します (一部の会社の API サーバーをテストします - IP はホワイトリストに登録されており、テストする URL を提供できません)。これにより、ロードされていない https モジュールやその他の初期設定ミスが除外されます。
複数の PHP インストールでテストしましたが、すべて v5.3.3、32 ビット、Debian 32 ビットです。
リクエストは cURL で機能しますが、curl_setopt($curl,
CURLOPT_SSL_VERIFYPEER, 0);
. ただし、verify_peer"=>false
file_get_contents のコンテキストを設定しても違いはないようです。
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 でこれに遭遇した人はいますか? デバッグする方法はありますか?