1

サーバーからファイルを取得するためにcURLを使用していますが、curl_exec()が失敗したときに戻り値を指定する方法があるのでしょうか。私のコードは次のようなものです:

if (!$result = curl_exec($curl)){
    echo "something is wrong.";
    exit;
}
/**
 *the rest of the script
 */

exec()呼び出しが失敗すると、echoステートメントはページに出力されず、exit()も呼び出されないため、次のスクリプトが通常どおり実行されます。curl_exec()が失敗しても、FALSEは表示されず、「NOT FOUND」ページのようなものが表示されるだけであることに気付きました。これが、私の問題の原因だと思います。条件テストを実行できるように、ブール値または文字列を強制的に返す方法はありますか?どうもありがとう。

4

2 に答える 2

1

curl_execfalse技術的な観点から HTTP 要求が正常に完了しなかった場合にのみ返されます。リクエスト自体完了したが、結果が期待どおりでない場合 (サーバーが 404 で応答した場合など)、正しく結果が返されますtrue(設定されているかどうかによって異なりCURLOPT_RETURNTRANSFERます)。

したがって、この不測の事態を個別に確認する必要があります。例えば:

if (!$result = curl_exec($curl)){
    echo "request totally failed.";
    exit;
}

$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($code >= 400) {
    echo "the server responded with an error code.";
    exit;
}

詳細については、HTTP ステータス コードのリストを参照してください。

于 2012-04-21T12:33:27.267 に答える
0

試す:

$result = curl_exec($curl);
if (!$result){
    echo "something is wrong.";
    exit;
}

curl_exec()上記の条件は、 false を返す場合にのみ満たされます。curl_exec()指定したターゲット リンクにアクセスできない場合は false を返します。like が 404 エラーを返してもcurl_exec()、リンクへのアクセスに問題はなかったため、false は返されません。

于 2012-04-21T12:32:13.930 に答える