curl返回错误值

时间:2012-04-21 12:30:29

标签: php curl

我正在使用cURL从服务器检索文件,我想知道有什么方法可以在curl_exec()失败时指定返回值。我的代码是这样的:

if (!$result = curl_exec($curl)){
    echo "something is wrong.";
    exit;
}
/**
 *the rest of the script
 */

当exec()调用失败时,页面上不会打印echo语句,显然也不会调用exit(),导致我的后续脚本正常执行。我注意到当curl_exec()失败时,它不会给你错误,它只是给你一个类似“未找到”的页面,我想这就是我的问题所在。有没有办法可以强制它返回布尔值或字符串,以便我可以进行条件测试?非常感谢。

2 个答案:

答案 0 :(得分:1)

如果HTTP请求未从技术角度成功完成,

curl_exec将仅返回false。如果请求本身 完成但结果不符合您的预期(例如服务器以404响应),它将正确返回true或结果(取决于是否设置CURLOPT_RETURNTRANSFER

因此,您必须单独检查此可能性。例如:

if (!$result = curl_exec($curl)){
    echo "request totally failed.";
    exit;
}

$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($code >= 400) {
    echo "the server responded with an error code.";
    exit;
}

有关详细信息,请参阅list of HTTP status codes

答案 1 :(得分:0)

尝试:

$result = curl_exec($curl);
if (!$result){
    echo "something is wrong.";
    exit;
}

仅当curl_exec()返回false时,才会满足上述条件。 curl_exec()无法访问您提供的目标链接时返回false。即使类似返回404错误,curl_exec()也不会返回false,因为它在访问链接时没有问题。