• 技术文章 >后端开发 >php教程

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

    2016-05-17 09:19:04原创876
    在使用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,问题就解决了。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:curl
    上一篇:比较时间段一与时间段二是否有交集的php函数_php技巧 下一篇:php学习之变量的使用_php基础
    Web大前端开发直播班

    相关文章推荐

    • 一文带你PHP利用phpmailer实现邮件发送功能• 使用Snoopy模拟登陆定时发帖实例(已测试) • php构造函数与析构函数 • php curl 学习总结 • PHP项目开发中最常用的自定义函数整理_php技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网