我正在使用cURL从服务器检索文件,我想知道有什么方法可以在curl_exec()失败时指定返回值。我的代码是这样的:
if (!$result = curl_exec($curl)){
echo "something is wrong.";
exit;
}
/**
*the rest of the script
*/
当exec()调用失败时,页面上不会打印echo语句,显然也不会调用exit(),导致我的后续脚本正常执行。我注意到当curl_exec()失败时,它不会给你错误,它只是给你一个类似“未找到”的页面,我想这就是我的问题所在。有没有办法可以强制它返回布尔值或字符串,以便我可以进行条件测试?非常感谢。
答案 0 :(得分:1)
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,因为它在访问链接时没有问题。