PHP 使用 curl 返回 false 的情况处理


一般情况下使用 php curl 去模拟访问 http 或者 https 可能会出现一些莫名其妙的问题,让人不好查找错误。

比如,以下是伪代码:

$response = curl_exec($ch);
return $response;

在执行后 curl 操作后发现返回:

bool(false)

像这样的错误,是比较懵逼的。
这时可以使用 curl_error 返回错误信息进行查找,比如以下代码:

$response = curl_exec($ch);
$error = curl_error($ch)
var_dump($error);exit(0);
return $response;

记住执行 curl_error 一定要在 curl_exec 函数后,否则大概率返回以下内容:

string(0) ""

显然,这对于找出错误毫无意义。正常输出错误如下:

string(26) "Port number ended with '\'"

接下来就根据错误信息开始排除出错原因。

但是 ,有些情况下,依然可能会返回空字符串,无法打印出真正的错误。这时,可以通过 curl_errno 返回错误编码,查找相应编码的错误,再把问题给解决。

记住执行 curl_errno 一定也要在 curl_exec 函数后,否则大概率返回以下内容:

int(0)

寻找错误编码代码如下:

$response = curl_exec($ch);
//$error = curl_error($ch)
//var_dump($error);exit(0);
$errno = curl_errno($ch)
var_dump($errno);exit(0);
return $response;

错误输出如下:

int(3)

之后根据错误代码进行排错纠察即可。


常见返回 fasle 处理方案,要根据你的实际情况进行调整,这里只是为了测试,放开所有权限:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    //信任任何证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);        //表示不检查证书

顺便记录一下,如果错误代码是 77 ,则需要重启 Apache 即可。

Logo

鸿蒙生态一站式服务平台。

更多推荐