导航:首页 > 编程语言 > phpcurl处理错误

phpcurl处理错误

发布时间:2024-09-22 22:52:56

⑴ 请问下php中如何处理这个curl_exec()的结果

可以使用 empty() 函数,
if ( empty( $data ) ) {
// 为空
} else {
// 不为空
}

如果是其他某种不明原因导致报错,可以用异常机制,
try {
if ( !$data ) { // 这里的条件也可以用其他
throw new Exception ( 'error' );
} else {
echo ' success ';
}
} catch (Exception $e) {
echo ' error ';
}

⑵ PHP Curl出现403错误怎么办

使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google这些网站居然都返回403错误,而访问其他的一些网站没事,如果设置为不使用proxy则都能正常访问。
难道google就不让用proxy连接么?显然不可能,所以打开curl的信息输出(curl_setopt($this->mSh,CURLOPT_VERBOSE,1);)看看,得到以下结果:
.代码如下:
*Trying127.0.0.1...*connected
*Connectedto127.0.0.1(127.0.0.1)port8118(#0)
*EstablishHTTPproxytunneltowww..com:80
>CONNECTwww..com:80HTTP/1.0
Host:www..com:80
User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)
Proxy-Connection:Keep-Alive
<HTTP/1.0403Connectionnotallowable
<X-Hint:,thenyouknowwhythishappens,-)
<
*TherequestedURLreturnederror:403
*
*Closingconnection#0
...Failed.
可以看到proxy服务器工作正常,的确是返回了403错误,但原因肯定还在我这边。终于,从网上(1of2,2of2)得到了点启发──我使用的是proxytunnel而非proxy。
在代码中,有这么一句:
.代码如下:
curl_setopt($this->mSh,CURLOPT_HTTPPROXYTUNNEL,true);
curl_setopt($this->mSh,CURLOPT_PROXY,$phost);
php文档中没有详细说明,不过mancurl中有详细解释,两者都是代理,proxytunnel(-p参数)允许其他协议通过http代理传输,而proxy(-x参数)则只能走http协议。所以我猜测,google的服务器和curl的proxytunnel不和,所以返回403。
禁用掉上面2行代码的第一句后,curl访问恢复正常。
比较奇怪的是,几种操作系统下还不一样,一台MACOSX就要显式的禁用proxytunnel才可以,curl版本:
.代码如下:
$curl--version
curl7.16.3(powerpc-apple-darwin9.0)libcurl/7.16.3OpenSSL/0.9.7lzlib/1.2.3
Protocols:
Features:GSS-
而另外一台ubuntu则完全不受影响,怎么都能用,curl版本:
.代码如下:
$curl--version
curl7.18.2(i486-pc-linux-gnu)libcurl/7.18.2OpenSSL/0.9.8gzlib/1.2.3.3libidn/1.10
Protocols:
Features:GSS-
MT主机上的centos也没事,curl版本:
.代码如下:
$curl--version
curl7.15.5(i686-redhat-linux-gnu)libcurl/7.15.5OpenSSL/0.9.8bzlib/1.2.3libidn/0.6.5
Protocols:
Features:GSS-
看来不完全是curl版本问题,MACOSX的确与众不同啊。
还有一个原因也会导致curl返回403错误,如果设置了:
.代码如下:
curl_setopt($ch,CURLOPT_NOBODY,true);
则需要紧跟着设置:
.代码如下:
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'GET');
不然会因为http服务器不允许HEAD命令而返回403错误。参考:TroublewithacURLrequestinPHP(forums.devshed.com/php-development-5/trouble-with-a-curl-request-in-php-445222.html)。MACOSX上curl之所以特殊,也不排除是这种原因

⑶ phpcurl遇到500会卡死

服务器环境或者不支持的组件等原因。phpcurl遇到500卡死是因为服务器环境或者不支持的组件等原因导致的500错误,这种情况下即使建立一个静态页面也会出现500错误。没办法补救。php curl就是php中的数据传输神器。

⑷ PHP的curl模拟·登录老是失败出现了405错误

405 是指请求的 URL 不支持请求的方法, htm(除伪静态)是静态页面,是只能使用 get 方法的,而你要登录,要用post,而你这里也确实是用的 post,那么我觉得你应该是 URL 取错了。像这种 post 的地址都要是有程序处理的,你再回去看看原来页面中 form 上的 action 地址吧

⑸ PHP 用CURL 抓取错误提示:Recv failure: Connection was aborted 怎么解决 求助各位大神

一、原因分析

web站点目前主要分为http和https两种协议,其中https类型的网站都是通过ssl协议+http协议的,是目前最安全的网站协议,访问此类网站的时候,会走ssl协议,验证访问者的证书,检测是否安全。

通过curl访问此类网站也是如此流程,但是curl中需要添加相应的参数,绕过ssl证书的验证,才可以正常访问,如出现此错误的一般原因是没有加此参数。

CURLOPT_SSL_VERIFYHOST的值

设为0表示不检查证书

设为1表示检查证书中是否有CN(common name)字段

设为2表示在1的基础上校验当前的域名是否与CN匹配。

二、解决方案

如果出现:

PHP Notice: curl_setopt():

CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in

一般原因是你设置了 curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, true );

改成curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, 2 );就行了。

(5)phpcurl处理错误扩展阅读

PHP其他原因错误:

1、错误现象

在用curl进行模拟调用时,curl接收内容会出现"Empty reply from server" 和 "Recv failure: Connection was reset"的错误。

2、解决方案

经过对apache的error_log进行跟踪,出现错误"Connection reset by peer: core_output_filter: writing data to the network"

修改httpd.conf,在虚拟主机上添加如下内容:

EnableSendfile off

EnableMMAP off

修改后"Empty reply from server"错误消失。

阅读全文

与phpcurl处理错误相关的资料

热点内容
苹果版app是什么 浏览:743
云服务器能更换地址 浏览:74
linux预读算法 浏览:556
视频用什么app编辑 浏览:68
编译原理清华实验 浏览:976
闲蛋app人气怎么样 浏览:273
javacatch用法 浏览:859
京峰教育python 浏览:984
加密货币战胜法定货币 浏览:684
混凝土结构中册pdf 浏览:930
永劫无间解压不了怎么回事 浏览:809
php如何开启curl 浏览:674
红黄文件夹 浏览:125
违背皇帝的命令是死罪吗 浏览:68
phpcurl处理错误 浏览:462
linuxftp防火墙端口设置 浏览:790
java面板图片 浏览:484
泰拉瑞亚14安卓版怎么操作 浏览:720
安卓手机相册加密软件 浏览:53
免费云服务器能永久使用吗 浏览:705