欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【关于php curl获取301或302转向的网址问题】,下面是详细的分享!
关于php curl获取301或302转向的网址问题
在使用php的curl获取远程文件,代码如下:
<? $ghurl=isset($_GET['id']) ? $_GET['id']:'http://www.baidu.com/'; // php 获取 function getContents($url){ $header=array("Referer: http://www.baidu.com/"); $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_HTTPHEADER,$header); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); //是否抓取跳转后的页面 ob_start(); curl_exec($ch); $contents=ob_get_contents(); ob_end_clean(); curl_close($ch); return $contents; } $contents=getContents($ghurl); echo $contents; ?> |
一般来说在win2003+iis下如,把php_curl.dll配置好就没问题了。
但笔者在 linux+apahe2.0+php5.2.12+directadmin,(一般国外主机商都是用这配置)如果获取的网址有301/302跳转,会报错:
| curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in *** |
关于这个问题,google,百度一下,都是在大篇长长的english,不精通linux的还真头痛。
解决办法其实很简单:登陆你的 directadmin
找到 ->>"PHP SafeMode Configuration" -->>看下图
把默认的 Default Safe 和 Default Open BaseDir 都 OFF,问题就解决了。
相关阅读:
基于PHP的cURL快速入门
PHP curl新浪微博发信接口
PHP 使用 CURL 同步抓取多个网页
PHP的curl实现get和post
以上所分享的是关于关于php curl获取301或302转向的网址问题,下面是编辑为你推荐的有价值的用户互动:
相关问题:php curl 302问题
答:有时候我们需要获取curl 302正在跳转的网址,一般我们是无法获取的,只能让他自动跳转或手动跳转,有些服务器也不支持curl自动跳转。 所以我们才想方法让他返回需要跳转的网址。 网上找了很久,也没有相关的答案。 然后再想想CURL有一个可以显示... >>详细
相关问题:为什么PHP CURL抓不到东西或者只能抓到302 found?
答:部分站点是防抓取的. 没有什么是不能抓的,只是你的hearder没有做好而已. 用浏览器访问先抓包,然后仿造就可以了 >>详细
相关问题:php使用curl访问的页面中,出现重定向时, 如何获取...
答:我的怎么就行呢。。 ************http://localhost/020space/test.php***** ************http://localhost/020space/test2.php***** $url has content.... ************显示结果***** runing curl...string(30645) "(然后是hao123.com的内容,... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
