file_get_contents函数不能使用的解决方法

有些主机服务商把php的allow_url_fopen选项是关闭了,就是没法直接使用file_get_contents来获取远程web页面的内容。那就是可以使用另外一个函数curl。

下面是file_get_contents和curl两个函数同样功能的不同写法

file_get_contents函数的使用示例:

< ?php
$file_contents = file_get_contents('http://www.ccvita.com/');
echo $file_contents;
?>

换成curl函数的使用示例:

< ?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://www.ccvita.com');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>

利用function_exists函数来判断php是否支持一个函数可以轻松写出下面函数

< ?php
function vita_get_url_content($url) {
if(function_exists('file_get_contents')) {
$file_contents = file_get_contents($url);
} else {
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
?>
其实上面的这个函数还有待商榷,如果你的主机服务商把file_get_contents和curl都关闭了,上面的函数就会出现错误。

时间: 2016-11-05

file_get_contents函数不能使用的解决方法的相关文章

EXCEL2007 vlookup函数公式#N/A解决方法

  办公软件EXCEL2007 vlookup函数公式提示#N/A错误,说明当在函数或公式中没有可用数值,那我们很明确的是这个函数公式是错误的,我现在用=VLOOKUP(A:A,Sheet3!A:B,2,0)这个错误公式ishikawa.给大家分析下,为什么是错误? 如果是输入公式造成的错误符号的话,我们只需要修改下我们的公式就可以啦.如图,这个工作表我们所使用的是vlookup函数公式,原公式是:=VLOOKUP(A:A,Sheet3!A:B,2,0). 那么我们如何修改这个公式呢,那就是将原

“无法访问G: 函数不正确”的解决方法

符时总提示:无法访问G: 函数不正确.(如下图) 原来刻录机硬件是没有故障,而是系统的一些设置出了点问题.解决方法如下: 打开"运行"对话框,输入:services.msc,点击确定后打开"服务" 对话框,在"服务(本地)"列表中找到 "IMAPI CD-Burning COM Service"(如下图). 让我们先来看看此服务的描述:"用Image Mastering Applications Programmin

php5.3 不支持 session_register() 此函数已启用的解决方法_php技巧

php从5.2.x升级到5.3.2.出来问题了.有些原来能用的程序报错了.报错内容是Deprecated: Function session_register() is deprecated查了一下是5.3这个session_register就不让用了,降回去?不爽.搜了一把,有个解决方法是写一个函数 复制代码 代码如下: <?php // Fix for removed Session functions function fix_session_register(){ function se

PHP中date()函数取得时间错误解决方法

通过date()函数获取时间后,发现小时时间不对,比现在的时间小8个小时,无论用H,还是用h都一样,这个是因为当前获取的是格林威治时间,与北京时间相差8小时. 解决方法如下 : 1.修改php.ini配置文件 打开php.ini文件,一般在php配置根目录下,找到其中的 ;date.timezone,删掉前面的分号,并改为date timezone = PRC.保存,重启Apahce服务即可(有时用restart会有问题,先stop然后start就行了). 2.加上date_default_ti

jquery的ajax()函数传值中文乱码解决方法介绍_jquery

复制代码 代码如下: $.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: '商品'},success : function(data){ } } ); 问题: 提交后后台action程序时,取到的type是乱码 解决方法: 方法一:提交前采用encodeURI两次编码,记住一定是两次 1.修改以下代码 复制代码 代码如下: data:{id:1, t

VB中的RasEnumConnections函数返回632错误解决方法_php实例

今天用了一下RasEnumConnections函数,发现MSDN上的例子是错误的. MSDN上RasEnumConnections的文档是这么说的: 复制代码 代码如下: To determine the required buffer size, call RasEnumConnections with lprasconn set to NULL. The variable pointed to by lpcb should be set to zero. The function will

php ord 函数与中文乱码解决方法

php string 函数 定义和用法 ord() 函数返回字符串第一个字符的 ascii 值. 语法 ord(string)参数 描述 string 必需.要从中获得 ascii 值的字符串. echo ord('我'); 这里只能返回230, 我是以u8保存的文件并输出的, 它得到的只有230, 而230转换成hex是e6,实际上u8中我的编码是e68891, 这样你就明白了吧, 其实它只拿到了第一个字节 echo chr(0xe6).chr(0x88).chr(0x91); 这里例子可以在

PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)_php实例

方法一: 在php中,抓取https的网站,提示如下的错误内容: Warning: file_get_contents() [function.file-get-contents]: failed to open stream: Invalid argument in I:Webmyphpa.php on line 16 打开php.ini文件找到 ;extension=php_openssl.dll ,去掉双引号";" ,重启web服务器即可. apache服务器的话,可以同时启用m

PHP file_get_contents函数读取远程数据超时的解决方法_php实例

在网络状况比较差的情况下file_get_contents函数经常读取远程数据失败. 解决办法如下: 复制代码 代码如下: /*设置超时配合失败之后尝试多次读取,效果比原先好很多*/ $url = 'http://www.jb51.net';           $opts = array(            'http'=>array(           'method'=>"GET",           'timeout'=>1, //设置超时   )