CURL を使用して HTTP ポスト リクエストをリモート サーバーに送信する単純な PHP スクリプトがあります。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://91.250.77.10/test.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('a' => 'b'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error)
echo $error;
else
echo $contents;
これにより、「サーバーからの応答がありません」というエラーが発生します。リモートサーバーのアクセスログにもリクエストが見つかりません!
さらに、ポストフィールドをクエリ文字列として送信すると、次のようになります。
curl_setopt($ch, CURLOPT_POSTFIELDS, '&a=b');
その後、すべてがうまくいきます。
リモート サーバーの Apache または PHP の構成に問題があるようです。ヒントはありますか?
編集:
今のところ、サーバーは Content-Type: multipart/form-data のリクエストを受け入れない (または正しく処理しない) ようです (CURL は配列をポストフィールドとして設定するときにそのタイプを使用しますが、文字列を設定するときは使用しません)。
リクエストでファイルを送信する必要があるため、multipart/form-data を使用する必要があります。では、サーバーがこれを正しく処理するにはどうすればよいでしょうか?