猿问

如何捕获PHP中的curl错误

我正在使用PHP curl函数将数据从本地计算机发布到Web服务器。我的代码如下:


$c = curl_init();

curl_setopt($c, CURLOPT_URL, $url);

curl_setopt($c, CURLOPT_RETURNTRANSFER, true);

curl_setopt($c, CURLOPT_POST, true);

curl_setopt($c, CURLOPT_POSTFIELDS, $data);

$result = curl_exec($c);

if (curl_exec($c) === false) {

    echo "ok";

} else {

    echo "error";

}

curl_close($c);

不幸的是,我无法捕获任何错误,例如404、500或网络故障。那么,我如何得知数据没有发布到远程或从远程检索呢?


喵喔喔
浏览 1705回答 3
3回答

慕丝7291255

您可以使用该curl_error()功能检测是否有错误。例如:$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $your_url);curl_setopt($ch, CURLOPT_FAILONERROR, true); // Required for HTTP error codes to be reported via our call to curl_error($ch)//...curl_exec($ch);if (curl_errno($ch)) {    $error_msg = curl_error($ch);}curl_close($ch);if (isset($error_msg)) {    // TODO - Handle cURL error accordingly}

慕侠2389804

如果CURLOPT_FAILONERROR为false,则http错误不会触发curl错误。<?phpif (@$_GET['curl']=="yes") {&nbsp; header('HTTP/1.1 503 Service Temporarily Unavailable');} else {&nbsp; $ch=curl_init($url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?curl=yes");&nbsp; curl_setopt($ch, CURLOPT_FAILONERROR, true);&nbsp; $response=curl_exec($ch);&nbsp; $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);&nbsp; $curl_errno= curl_errno($ch);&nbsp; if ($http_status==503)&nbsp; &nbsp; echo "HTTP Status == 503 <br/>";&nbsp; echo "Curl Errno returned $curl_errno <br/>";}
随时随地看视频慕课网APP
我要回答