PHP cURL HTTP CODE RETURN 0

2022-08-30 07:17:35

我不明白当我回声$httpCode我总是得到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);

答案 2

curl_exec后尝试此操作,看看有什么问题:

print curl_error($ch);

如果打印的内容类似于“格式不正确”,请检查您的URL格式。


推荐