关于php curl获取301或302转向的网址问题的解决方法_php技巧

在使用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 SafeDefault Open BaseDir OFF,问题就解决了。

时间: 2024-09-23 06:05:18

关于php curl获取301或302转向的网址问题的解决方法_php技巧的相关文章

关于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();

php采用curl访问域名返回405 method not allowed提示的解决方法_php技巧

/** * http测试 * 注:PHP版本5.2以上才支持CURL_IPRESOLVE_V4 * @param $url 网站域名 * @param $type 网站访问协议 * @param $ipresolve 解析方式 */ public function web_http($url,$type,$ipresolve) { //设置Header头 $header[] = "Accept: application/json"; $header[] = "Accept-E

PHP简单获取网站百度搜索和搜狗搜索收录量的方法_php技巧

本文实例讲述了PHP简单获取网站百度搜索和搜狗搜索收录量的方法.分享给大家供大家参考,具体如下: 获取网站百度搜索和搜狗搜索的收录量代码,可以用于获取网站域名在搜索引擎的收录数量,一直想找这个API但没找到,就在网上找了个例子,学习修改了下,可以正常获取百度搜索和搜狗搜索的收录量了:原理是获取搜索引擎site:domain的结果数量,然后再抓取这个数量显示出来.   function baidu($url){ $baidu="http://www.baidu.com/s?wd=site:&quo

PHP获取一段文本显示点阵宽度和高度的方法_php技巧

本文实例讲述了PHP获取一段文本显示点阵宽度和高度的方法.分享给大家供大家参考.具体如下: define("F_SIZE", 8); define("F_FONT", "arial.ttf"); function get_bbox($text){ return imagettfbbox(F_SIZE, 0, F_FONT, $text); } function text_height ($text) { $box = get_bbox($text

php mysql获取表字段名称和字段信息的三种方法_php技巧

php mysql获取表字段名称和字段信息的三种方法 先给出本实例中使用的表的信息: 使用desc获取表字段信息 php代码如下: <?php mysql_connect("localhost","root",""); mysql_select_db("test"); $query = "desc student"; $result = mysql_query($query); while($row=

php获取文章上一页与下一页的方法_php技巧

本文实例讲述了php获取文章上一页与下一页的方法.分享给大家供大家参考.具体方法如下: 今天发现一个站的上一页与下一页出现问题,上一页没有问题但是在下一页是直接到了本频道最新发布的文章了,按原理应该是文章本身ID的前与后的ID才是上下页吧,下面我来与大家详细讲述一下. 先看个例子:1,2,3,4,5. 假如上面5个是ID了,我要对上一页排序直接使用order by id desc,如我当前ID为3那么出来的是2才对,对下一页我们要用order by id asc得出的排序应该是,4,好了原理就这

PHP采用get获取url汉字出现乱码的解决方法_php技巧

本文实例讲述了PHP采用get获取url汉字出现乱码的解决方法.分享给大家供大家参考.具体方法如下: 一.问题: 本来打算这样使用 复制代码 代码如下: <a href="list.php?plate=辖区动态" charset="utf-8" target="main">[查看辖区动态]</a> 结果在list.php页面得到的是-–查看[辖区动怿] 一开始猜想可能是汉字的"态"这个编码和某些东西冲突

实现在同一方法中获取当前方法中新赋值的session值解决方法_php技巧

项目开发中遇到这样一个问题,在同一方法中对session数组进行赋值,但是想在此方法中接着使用此session,因为我是用的if-elseif-,由于排斥作用,在if条件中给session赋值后,再调用方法进入另一个elseif条件中就获取不到上一步的赋值,现将解决方法总结如下: PHP SESSION有一个函数:session_write_close(),这个函数的作用是:写入session数据保存并且结束session. 手册中对该函数的描述中说到:Session data is usual

php获取当前月与上个月月初及月末时间戳的方法_php技巧

本文实例讲述了php获取当前月与上个月月初及月末时间戳的方法.分享给大家供大家参考,具体如下: 当前月 <?php $thismonth = date('m'); $thisyear = date('Y'); $startDay = $thisyear . '-' . $thismonth . '-1'; $endDay = $thisyear . '-' . $thismonth . '-' . date('t', strtotime($startDay)); $b_time = strtot