1

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

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

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

4

2 回答 2

1

curl_execfalse仅当 HTTP 请求从技术角度未成功完成时才会返回。如果请求本身完成但结果不是您所期望的(例如服务器以 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;
}

有关详细信息,请参阅HTTP 状态代码列表

于 2012-04-21T12:33:27.267 回答
0

尝试:

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

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

于 2012-04-21T12:32:13.930 回答