1. ホーム
  2. php

[解決済み] curl_exec() は常に false を返します。

2022-02-06 13:15:41

質問

私はこのような簡単なコードを書きました。

$ch = curl_init();

//Set options
curl_setopt($ch, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website_content = curl_exec ($ch);

私の場合 $website_content は、次のようになります。 false . どなたか、何が間違っているのか、アドバイスしていただけませんか?

解決方法は?

エラーのチェックと対処はプログラマーの味方です。cURL関数の初期化および実行時の戻り値をチェックします。 curl_error() curl_errno() には、失敗した場合の詳細情報が記載されます。

try {
    $ch = curl_init();

    // Check if initialization had gone wrong*    
    if ($ch === false) {
        throw new Exception('failed to initialize');
    }

    // Better to explicitly set URL
    curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
    // That needs to be set; content will spill to STDOUT otherwise
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // Set more options
    curl_setopt(/* ... */);
    
    $content = curl_exec($ch);

    // Check the return value of curl_exec(), too
    if ($content === false) {
        throw new Exception(curl_error($ch), curl_errno($ch));
    }

    // Check HTTP return code, too; might be something else than 200
    $httpReturnCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    /* Process $content here */

} catch(Exception $e) {

    trigger_error(sprintf(
        'Curl failed with error #%d: %s',
        $e->getCode(), $e->getMessage()),
        E_USER_ERROR);

} finally {
    // Close curl handle unless it failed to initialize
    if (is_resource($ch)) {
        curl_close($ch);
    }
}


* curl_init() マニュアル の状態になります。

成功時、cURLハンドルを返します。 FALSE エラーの場合

を返す関数を観測しました。 FALSE を使用している場合、その $url パラメータがあり、ドメインが解決できなかった場合。パラメータが未使用の場合、関数 かもしれない を返すことはありません。 FALSE . しかし、マニュアルには何がエラーになるのかが明確に書かれていないので、必ずチェックしてください。