1

cURLを使用するのはこれが初めてなので、私の側ではばかげたエラーかもしれませんが、次のコードです。

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    echo $output;

「1」を出力します。CURLOPT_RETURNTRANSFERは、curl_execが0またはコンテンツのいずれかを返すことを保証する必要があることを理解していますが、ここでは、CURLOPT_RETURNTRANSFERがtrueに設定されていないかのように動作します。明らかな何かが欠けていますか?

ありがとう!

4

3 に答える 3

1

同様の問題があり、使用して解決しました

curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);

問題は、サーバーがカスタム エラー ページを返し、cURL がそれを成功と解釈したことでした。このオプションを使用することで、404 のカスタム エラー ページ ヘッダー コードが正しく検出され、URL エラーが検出されました。

OP は facebook をターゲットとして使用することを指しているため、カスタム エラー メッセージがターゲット URL によっても使用されたと思われます。

于 2013-02-05T22:20:23.950 に答える
1

コードは正しいようです。curl_getinfo() を試してください

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$outputInfo = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
echo $output . PHP_EOL;
echo $outputInfo;

リソースが文字通り「1」のボディを返している可能性があります

于 2012-06-29T22:01:09.487 に答える
-1

cURL の OOP ラッパーであるGuzzleを使用します。(ただし、GET リクエストを使用しているだけなので、file_get_contents($url);問題なく動作します)。ただし、コードに実際の問題はありません。URL は有効ですか?

curl_setoptまた、呼び出しごとに が true を返すことを確認し、その関数を使用して CURLOPT_URL を設定してみてください。

于 2012-06-29T21:38:41.847 に答える