为了账号安全,请及时绑定邮箱和手机立即绑定

如何捕获PHP中的curl错误

如何捕获PHP中的curl错误

PHP
喵喔喔 2019-09-21 14:14:09
我正在使用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或网络故障。那么,我如何得知数据没有发布到远程或从远程检索呢?
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您可以使用该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

}


查看完整回答
反对 回复 2019-09-21
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

如果CURLOPT_FAILONERROR为false,则http错误不会触发curl错误。


<?php

if (@$_GET['curl']=="yes") {

  header('HTTP/1.1 503 Service Temporarily Unavailable');

} else {

  $ch=curl_init($url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?curl=yes");

  curl_setopt($ch, CURLOPT_FAILONERROR, true);

  $response=curl_exec($ch);

  $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

  $curl_errno= curl_errno($ch);

  if ($http_status==503)

    echo "HTTP Status == 503 <br/>";

  echo "Curl Errno returned $curl_errno <br/>";

}


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 1704 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信