相关文章推荐
魁梧的羊肉串  ·  【Azure ...·  2 月前    · 
强悍的梨子  ·  python ...·  2 月前    · 
性感的鸵鸟  ·  curl命令 CURL命令 测试 ...·  2 月前    · 
爱看书的竹笋  ·  Unable to parse ...·  1 年前    · 
逃跑的键盘  ·  java - no "Tests run: ...·  1 年前    · 

在 PHP 中使用 cURL 有时会遇到错误,我们来看看如何调试 cURL 的错误。

首先可以使用的是 curl_errno 和 curl_error 函数,分别返回 HTTP 的错误代码和错误类别。例如:

<?php

$ch = curl_init( 'http://example.com/' );

curl_exec( $ch );

if (curl_errno( $ch )) {

echo 'Curl error: ' . curl_error( $ch );

}

curl_close( $ch );

?>

其次,如果需要得到更详细的信息,可以用 curl_getinfo 函数。例如:

<?php

$ch = curl_init( 'http://example.com/' );

curl_setopt( $ch , CURLINFO_HEADER_OUT, true);

curl_exec( $ch );

if (!curl_errno( $ch )) {

print_r(curl_getinfo( $ch ));

}

curl_close( $ch );

?>

其中设置 CURLINFO_HEADER_OUT 选项之后 curl_getinfo 函数返回的数组将包含 cURL 请求的 header 信息。而要看到回应的 header 信息可以在 curl_setopt 中设置 CURLOPT_HEADER 选项为 true。

curl_exec 函数执行成功时,将根据 CURLOPT_RETURNTRANSFER 选项的值处理回应的正文信息:如果为 true 将作为字符串返回,如果为 false 将直接输出。执行失败时结果为 FALSE。也就是说,如果执行失败(假设是 400 错误),从 curl_exec 函数的结果中没法看到回应的正文(里面可能包含更加具体的错误信息)。要看到回应正文,有两种方法。第一种方法是设置 400 为成功的代码,例子如下:

curl_setopt( $ch , CURLOPT_FAILONERROR, false);

curl_setopt( $ch , CURLOPT_HTTP200ALIASES, array (400));

第二种方法是设置 CURLOPT_VERBOSE 为 true,同时将 CURLOPT_STDERR 设置为用 fopen 打开的一个文件。这样 cURL 将把和服务器的所有交互信息都记录到该文件中。

最后一个问题是:如何在 cURL 中看到请求的正文信息?这个问题似乎没看到解决办法。特别是你用 cURL 上传文件时,如果出错了,你不容易知道到底哪里出问题了。这个是 cURL 不好之处,你可以改用 fsockopen 或者 pfsockopen 试试。

参考资料:
[1] Debugging Curl | Practical PHP Programming
[2] Using PHP curl how does one get the response body for a 400 response
[3] PHP cURL retrieving response headers AND body in a single request?
[4] PHP 手册:pfsockopen

在 PHP 中使用 cURL 有时会遇到错误,我们来看看如何调试 cURL 的错误。首先可以使用的是 curl_errno 和 curl_error 函数,分别返回 HTTP 的错误代码和错误类别。例如: &amp;lt;?php $ch = curl_init('http://example.com/'); curl_exec($ch); if (curl_errn...
php curl error: php curl error code_大海技术博客-CSDN博客 有些时候发下浏览器可以访问的get接口,postman却返回false,打印error code后返回数值,可以参考上面的errror code值找到对应的值处理 首先直接ping一下,比如如果你的接口是get的 #ping curl "http://www.baidu.com.cn/api/getDriverInfo/?arg=%7B%22driver_id%22%3A8008%7D" 发下ping
七夕啦,作为开发,妹子没得撩就“撩”下服务器吧,妹子有得撩的同学那就左拥妹子右抱服务器吧,况且妹子是要礼物的,服务器又不用。好啦,长话短说再长说,祭出今天的工具—— CURL (Client URL Library),当然今天以 PHP 的方式来使用这件工具。 0. curl 是个什么东西 PHP supports lib curl , a libra...
// 创建一个指向一个不存在的位置的 cURL 句柄 $ch = curl _init('http://404. php .net/'); curl _setopt($ch, CURL OPT_RETURNTRANSFER, true); if( curl _exec($ch) === false) echo ' Curl error: ' . c...
可以使用 PHP curl 函数来模拟发送HTTP请求。首先需要初始化一个 curl 会话,设置请求的URL和其他参数,然后执行请求并获取返回结果。以下是一个简单的例子: // 初始化 curl $ch = curl _init(); // 设置请求的URL curl _setopt($ch, CURL OPT_URL, "http://example.com/api"); // 设置请求的参数 curl _setopt($ch, CURL OPT_POST, true); curl _setopt($ch, CURL OPT_POSTFIELDS, "param1=value1&param2=value2"); // 执行请求并获取返回结果 $response = curl _exec($ch); // 关闭 curl 会话 curl _close($ch); 这里示范了发送POST请求,并传递了两个参数。你也可以使用其他HTTP方法,如GET、PUT、DELETE等,以及设置其他相关参数。 请注意:以上回答仅供参考,不构成任何实际操作建议。
CSDN-Ada助手: 非常感谢博主分享这篇有用的文章,它帮助了我解决了端口占用问题。你的文章写得非常清晰明了,让人一下子就能理解并操作。期待你未来能够再次创作,分享更多IT知识,让我们受益更多。再次感谢你的付出,祝你生活愉快,工作顺利! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 Hbuilder如何创建并运行Vue项目 我吃西红柿11: 没有配置么? 我上网下载了rar压缩文件,有密码,用arpr工具怎么破解不了,_压缩文件密码 m0_55834113: 这个是来打广告的,网址的软全是捆绑 java中的void有什么作用啊?构造方法与方法有什么区别呢? Copy-Paste: 豁然开朗,谢谢~ 如何激活Navicat?如何注册Navicat Rionice: 注册码无效