4

さて、cURL を使用して SSL サイトへの HTTP_POST を作成したいと思います。証明書をサーバーに既にインポートしました。これは私のコードです:

$url  = "https://www.xxx.xxx";
$post = "";# all data that going to send

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0'); 

$exe  = curl_exec($ch);
$getInfo = curl_getinfo($ch);

if ($exe === false) {
    $output = "Error in sending";
    if (curl_error($ch)){
        $output .= "\n". curl_error($ch);
    }
} else if($getInfo['http_code'] != 777){
    $output = "No data returned. Error: " . $getInfo['http_code'];
    if (curl_error($ch)){
        $output .= "\n". curl_error($ch);
    }
}

curl_close($ch);

echo $output;

「500」を返し続けます。w3schools に基づくと、500 は内部サーバー エラーを意味します。サーバーに問題がありますか? これを解決/トラブルシューティングする方法は?

4

3 に答える 3

8

一部のサーバー (特に SSL で要求されたもの) は、要求のいくつかのパラメーターが正しく設定されていない場合に 500 を返します。

« 500 エラー» (たとえば)を回避するには、次のことを確認してください。

  • 必要に応じて、適切な "Referer: " ヘッダーを設定します。

curl_setopt(CURLOPT_REFERER, 'http://site.com/ref_page');

  • 適切な「User-Agent:」ヘッダーを設定し、

curl_setopt(CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');

于 2013-01-07T06:47:54.093 に答える
2
$url  = "https://www.xxx.xxx";
$post = "";# all data that going to send

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT    5.0'); 

$exe  = curl_exec($ch);
$getInfo = curl_getinfo($ch);

if ($exe === false) {
$output = "Error in sending";
if (curl_error($ch)){
    $output .= "\n". curl_error($ch);
}
} else if($getInfo['http_code'] != 777){
$output = "No data returned. Error: " . $getInfo['http_code'];//as preline
if (curl_error($ch)){
    $output .= "\n". curl_error($ch);
}
}

curl_close($ch);

echo $output;

ところで: CURL モジュールがインストールされていることを確認してください。

于 2010-03-16T09:39:45.627 に答える
0

サーバー内またはサーバー上で実行されるスクリプトに問題があり、未処理の例外がスローされる可能性があります。

サーバーのアクセス ログとエラー ログを確認する必要があります。

于 2010-03-16T09:34:23.950 に答える