SSL を使用しないテスト リージョンで動作する次のコードがありますが、本番システムでは動作しません。呼び出し自体はブラウザーで機能しますが、cURL 経由で実行すると 500 エラーが発生します。
$region = "https://api.mysite.com/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . "/cacert.pem");
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_URL, $region . $api);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$resp = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
return $resp;
CURL_OPT_FAILONERROR を入力しない場合、エラーは発生せず、空白の応答が返されます。これはhttps経由であるという事実に関係していると確信しています(これが私のテスト地域と現在の地域の唯一の違いであるため)が、これを機能させる方法がわかりません。