PHP cURL HTTP CODE 0を返す 質問する

PHP cURL HTTP CODE 0を返す 質問する

$httpCode を echo すると常に 0 が返されるのは理解できません。$html_brand を壊れた URL に変更すると 404 が返されると思っていました。何か見落としている点や知らない点はありますか? ありがとうございます。

 //check if url exist
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $html_brand);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 404) {
    echo "The Web Page Cannot Be Found";
    return;
}
curl_close($ch);

ベストアンサー1

サーバーに接続すると、サーバーから戻りコードを取得できます。そうでない場合は失敗し、0 が返されます。したがって、「www.google.com/lksdfk」に接続しようとすると、戻りコード 400 が返されます。google.com に直接アクセスすると、戻りコード 302 が返されます (次のページに転送すると 200 が返されます... まあ、私は google.com.br に転送するので、そのようにしています。そのため、このコードは返されない可能性があります)。また、「googlecom」にアクセスすると、0 (ホストが見つかりません) が返されます。したがって、最後のコードでは、コードを返す相手がいません。

以下のコードを使用してテストしました。

<?php

$html_brand = "www.google.com";
$ch = curl_init();

$options = array(
    CURLOPT_URL            => $html_brand,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER         => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_ENCODING       => "",
    CURLOPT_AUTOREFERER    => true,
    CURLOPT_CONNECTTIMEOUT => 120,
    CURLOPT_TIMEOUT        => 120,
    CURLOPT_MAXREDIRS      => 10,
);
curl_setopt_array( $ch, $options );
$response = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ( $httpCode != 200 ){
    echo "Return code is {$httpCode} \n"
        .curl_error($ch);
} else {
    echo "<pre>".htmlspecialchars($response)."</pre>";
}

curl_close($ch);

おすすめ記事