很多站长朋友们都不太清楚phpcurl抛出异常,今天小编就来给大家整理phpcurl抛出异常,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php curl失败 2、 php curl 本地测试可用,线上测试报错 3、 php编译curl出错,紧急求助高手门 4、 PHP的curl模拟·登录老是失败出现了405错误 5、 php curl常见错误:SSL错误、bool(false) 6、 PHP Curl出现403错误怎么办 php curl失败curl_setopt($ch, CURLINFO_HEADER_OUT, true);
然后吧curl_getinfo($ch)发出来我看看
php curl 本地测试可用,线上测试报错<?php
/*****************************************************
程序名称: curl使用测试
程序说明: 股票页面信息获取
编写时间: 2011年2月12日
编写人员: 童童
修改时间:
修改人员: 童童
备 注:
****************************************************/
$GPNumber = '000877';
$curlPost = 'gpdm=' . urlencode($GPNumber);
//初始化
$ch = curl_init();
//设置选项(直接设置或者通过数组设置)
//直接设置
//设置你需要抓取的URL
curl_setopt($ch, CURLOPT_URL, "");
//通过数组设置
/*
$options = array(
CURLOPT_URL => '',
CURLOPT_HEADER => false
);
curl_setopt_array($ch, $options);
*/
// 设置header
curl_setopt($ch, CURLOPT_HEADER, 1);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设置使用POST方式
curl_setopt($ch, CURLOPT_POST, 1);
//设置POST数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
//执行并获取HTML文档内容
$str = curl_exec($ch);
//转换编码
$str = mb_convert_encoding($str, "utf-8", "gb2312");
//$str = mb_convert_encoding($str, "gb2312", "utf-8");
//ini_set('max_execution_time', '180');
set_time_limit(1800);
//处理内容
$str1 = "/<tr[^<]*<td[^<]*>(?<value1>.*?)<//td>[^<]*<td[^<]*>(?<value2>.*?)<//td>[^<]*<td[^<]*>(?<value3>.*?)<//td>[^<]*<td[^<]*>(?<value4>.*?)//<br//>[//s//S]*//<//a//><//td>[^<]*<td[^<]*>(?<value5>.*?)<//td>[^<]*<td[^<]*>(?<value6>.*?)<//td>[^<]*<td[^<]*>(?<value7>.*?)<//td>[^<]*<td[^<]*>(?<value8>.*?)<//td>[^<]*<td[^<]*>(?<value9>.*?)<//td>[^<]*<td[^<]*>(?<value10>.*?)<//td>[^<]*<td[^<]*>(?<value11>.*?)<//td>[^<]*<td[^<]*>(?<value12>.*?)<//td>[^<]*<td[^<]*>(?<value13>.*?)<//td>[^<]*<td[^<]*>(?<value14>.*?)<//td>[^<]*<td[^<]*>(?<value15>.*?)<//td>[^<]*<td[^<]*>(?<value16>.*?)<//td>[^<]*<td[^<]*>(?<value17>.*?)<//td>[^<]*<td[^<]*>(?<value18>.*?)<//td>[^<]*<td[^<]*>(?<value19>.*?)<//td>[^<]*<td[^<]*>(?<value20>.*?)<//td>[^<]*<td[^<]*>(?<value21>.*?)<//td>[^<]*<td[^<]*>(?<value22>.*?)<//td>[^<]*<td[^<]*>(?<value23>.*?)<//td>[^<]*<td[^<]*>(?<value24>.*?)<//td>[^<]*<td[^<]*>(?<value25>.*?)<//td>[^<]*<td[^<]*>(?<value26>.*?)<//td>[^<]*<td[^<]*>(?<value27>.*?)<//td>[^<]*<td[^<]*>(?<value28>.*?)<//td>[^<]*<td[^<]*>(?<value29>.*?)<//td>[^<]*<td[^<]*>(?<value30>.*?)<//td>[^<]*<td[^<]*>(?<value31>.*?)<//td>[^<]*<td[^<]*>(?<value32>.*?)<//td>[^<]*<td[^<]*>(?<value33>.*?)<//td>[^<]*<td[^<]*>(?<value34>.*?)<//td>[^<]*<td[^<]*>(?<value35>.*?)<//td>[^<]*<td[^<]*>(?<value36>.*?)<//td>[^<]*<td[^<]*>(?<value37>.*?)<//td>[^<]*<td[^<]*>(?<value38>.*?)<//td>[^<]*<td[^<]*>(?<value39>.*?)<//td>[^<]*<td[^<]*>(?<value40>.*?)<//td>[^<]*<td[^<]*>(?<value41>.*?)<//td>[^<]*<td[^<]*>(?<value42>.*?)<//td>[^<]*<td[^<]*>(?<value43>.*?)<//td>[^<]*<td[^<]*>(?<value44>.*?)<//td>[^<]*<td[^<]*>(?<value45>.*?)<//td>[^<]*<td[^<]*>(?<value46>.*?)<//td>[^<]*<td[^<]*>(?<value47>.*?)<//td>[^<]*<td[^<]*>(?<value48>.*?)<//td>[^<]*<td[^<]*>(?<value49>.*?)<//td>[^<]*<//tr>/";
$str2 = "<tr bgcolor='#EDEDED' height='20'><td>2011年2月11日</td><td>16:12</td><td>000877</td><td class=tdred>天山股份 <br><a target='_blank' href="" mce_href="">分时ddx</a> <a target='_blank' href="" mce_href="">点评</a> <a target='_blank' href="" mce_href="">新闻</a> <a target='_blank' href="gpdmyd.asp?gpdm=000877" mce_href="gpdmyd.asp?gpdm=000877">异动</a> <a target='_blank' href="" mce_href="">股东</a></td><td>33.81</td><td class=tdred>6.42</td><td class=tdred>0.241</td><td>0.287</td><td>16.748</td> <td class=tdbgred>2468</td> <td class=tdred>1251</td> <td class=tdred>1217</td> <td class=tdred>-676</td> <td class=tdred>-1792</td> <td class=tdbgred>8.76</td><td class=tdred>17.28</td><td class=tdred>7.3</td><td>0.414</td><td>0.396</td><td>0.053</td><td>-2.067</td><td>7</td><td>2</td><td class=tdred>3.7</td><td>3.6</td><td>-2.0</td><td class=tdred>-5.3</td><td>107</td><td>1.19</td><td class=tdred>-5401</td><td>131</td><td>7119</td><td>8479</td><td>14.3</td><td>12.0</td><td>-1792</td><td>2468</td><td>6.0</td><td>2.3</td><td>51.1</td><td>47.5</td><td>18.5</td><td>20.5</td><td>24.4</td><td>29.7</td><td>3.30</td><td>1.85</td><td>18.74③</td><td>1.353</td></tr>";
echo preg_match_all($str1,$str,$strs);
/*
foreach ($strs as $row)
{
echo mb_convert_encoding($row, "utf-8", "gb2312")."</br>";
}
*/
/*
if ($output === FALSE) {
echo "cURL Error: " . curl_error($ch);
}
*/
//var_dump($str);
//释放curl句柄
curl_close($ch);
?>
php编译curl出错,紧急求助高手门输入phpinfo() 看curl扩展是否启用,没有启用的话需要启用才可以使用curl功能。
启用方法:
WINDOWS:找到正在使用的PHP.INI文件 去掉;extension=php_curl.dll 前面的;
Linux : 重新编译PHP ,–with-curl=/usr/local/curl 其中/usr/local/curl安装的curl的目录
PHP的curl模拟·登录老是失败出现了405错误405 是指请求的 URL 不支持请求的方法, htm(除伪静态)是静态页面,是只能使用 get 方法的,而你要登录,要用post,而你这里也确实是用的 post,那么我觉得你应该是 URL 取错了。像这种 post 的地址都要是有程序处理的,你再回去看看原来页面中 form 上的 action 地址吧
php curl常见错误:SSL错误、bool(false)排查方法: 在命令行中使用curl调用试试。
原因: 服务器所在机房无法验证SSL证书。
解决办法: 跳过SSL证书检查。
排查方法:
返回:
再排查:
返回:
HTTP/1.1 100 Continue
Connection: close
原因 :php curl接收到HTTP 100就结束了,应该继续接收HTTP 200
解决方案:
PHP Curl出现403错误怎么办使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google?baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果设置为不使用proxy则都能正常访问。
难道google?baidu就不让用proxy连接么?显然不可能,所以打开curl的信息输出(curl_setopt($this->mSh,?CURLOPT_VERBOSE,?1);)看看,得到以下结果:
.?代码如下:
*???Trying?127.0.0.1...?*?connected
*?Connected?to?127.0.0.1?(127.0.0.1)?port?8118?(#0)
*?Establish?HTTP?proxy?tunnel?to?
>?CONNECT??HTTP/1.0
Host:?
User-Agent:?Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.1;?SV1)
Proxy-Connection:?Keep-Alive
<?HTTP/1.0?403?Connection?not?allowable
<?X-Hint:?If?you?read?this?message?interactively,?then?you?know?why?this?happens?,-)
<?
*?The?requested?URL?returned?error:?403
*?Received?HTTP?code?403?from?proxy?after?CONNECT
*?Closing?connection?#0
...?Failed.
可以看到proxy服务器工作正常,的确是baidu返回了403错误,但原因肯定还在我这边。终于,从网上(1of2,?2of2)得到了点启发──我使用的是proxytunnel而非proxy。
在代码中,有这么一句:
.?代码如下:
?curl_setopt($this->mSh,?CURLOPT_HTTPPROXYTUNNEL,?true);
?curl_setopt($this->mSh,?CURLOPT_PROXY,?$phost);
php文档中没有详细说明,不过man?curl中有详细解释,两者都是代理,proxytunnel(-p参数)允许其他协议通过http代理传输,而proxy(-x参数)则只能走http协议。所以我猜测,google?baidu的服务器和curl的proxytunnel不和,所以返回403。
禁用掉上面2行代码的第一句后,curl访问恢复正常。
比较奇怪的是,几种操作系统下还不一样,一台MAC?OSX就要显式的禁用proxytunnel才可以,curl版本:
.?代码如下:
$?curl?--version
curl?7.16.3?(powerpc-apple-darwin9.0)?libcurl/7.16.3?OpenSSL/0.9.7l?zlib/1.2.3
Protocols:?tftp?ftp?telnet?dict?ldap?http?file?https?ftps?
Features:?GSS-Negotiate?IPv6?Largefile?NTLM?SSL?libz
而另外一台ubuntu则完全不受影响,怎么都能用,curl版本:
.?代码如下:
$?curl?--version
curl?7.18.2?(i486-pc-linux-gnu)?libcurl/7.18.2?OpenSSL/0.9.8g?zlib/1.2.3.3?libidn/1.10
Protocols:?tftp?ftp?telnet?dict?ldap?ldaps?http?file?https?ftps?
Features:?GSS-Negotiate?IDN?IPv6?Largefile?NTLM?SSL?libz
MT主机上的centos也没事,curl版本:
.?代码如下:
$?curl?--version
curl?7.15.5?(i686-redhat-linux-gnu)?libcurl/7.15.5?OpenSSL/0.9.8b?zlib/1.2.3?libidn/0.6.5
Protocols:?tftp?ftp?telnet?dict?ldap?http?file?https?ftps?
Features:?GSS-Negotiate?IDN?IPv6?Largefile?NTLM?SSL?libz
看来不完全是curl版本问题,MAC?OSX的确与众不同啊。
还有一个原因也会导致curl返回403错误,如果设置了:
.?代码如下:
?curl_setopt($ch,?CURLOPT_NOBODY,?true);
则需要紧跟着设置:
.?代码如下:
?curl_setopt($ch,?CURLOPT_CUSTOMREQUEST,?'GET');
不然会因为http服务器不允许?HEAD?命令而返回403错误。参考:Trouble?with?a?cURL?request?in?PHP(forums.devshed测试数据/php-development-5/trouble-with-a-curl-request-in-php-445222.html)。MAC?OSX上curl之所以特殊,也不排除是这种原因
关于phpcurl抛出异常的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于phpcurl抛出异常 phpcurlpost请求的详细内容...