PHP cURL HTTP 代码返回 0

标签 php curl

我不明白当我回显 $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);

最佳答案

如果你连接到服务器,那么你可以从它那里得到一个返回码,否则它会失败并且你得到一个 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);

关于PHP cURL HTTP 代码返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227879/

相关文章:

php - 直接从 PHP 调用 Azure 存储 REST API

php - 拉维尔 5 : Restrict access to controllers by User group

php - 需要一个好的类的建议以用于表单显示和验证 (PHP)

php - 如何使用 PHP 读取 CSV 文件并在 Table/DIV 中显示内容?

使用 libcurl 进行自定义 SSL 证书验证

c - SSLv23 不允许 sslv3 客户端连接

PHP Curl 错误 35 - 同行报告不兼容或不受支持的协议(protocol)版本

php - mysql 显示表的所有内容

curl - 适用于 Windows 的最小 cURL 交叉编译

php - cURL 因 SSL 证书拒绝而失败?