当前位置: 首页 > 图文教程 > 网络编程 > PHP > php的curl获取有301/302跳转文件出错问题解决

PHP
如何学习一个新的PHP框架
配置最新的PHP加MYSQL服务器
PHP原版HTML编码器溢出问题的解决
PHP-Javascript“返回上一页”无缓存问题
基于DB2及PHP的应用系统跨平台迁移详细步骤(一)
基于DB2及PHP的应用系统跨平台迁移详细步骤(二)
PHP Squid中可缓存的动态网页设计
PHP读取文件夹内有多少个文件
PHP Header用于页面跳转要注意的几个问题总结
一些使用频率比较高的PHP函数
PHP5.2下preg_replace函数的问题
PHP-Push技术实现刷新功能
PHP动态图像的创建
PHP中重新定向到另一个页面
在PHP中将图片存放ORACLE中
PHP开发大型Web应用浅析
PHP正则相关的几个preg函数
PHP开发中最常见的文件操作疑难解答
面向普通人加密 使用PHP应用程序保护数据
记录PHP网站开发几个好功能

PHP 中的 php的curl获取有301/302跳转文件出错问题解决


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-30   浏览: 278 ::
收藏到网摘: n/a

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