关于file_get_contents返回为空或函数不可用的解决方案_php技巧

如果你使用file_get_contents获取远程文件内容返回为空或提示该函数不可用,也许本文能帮到你!
使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。如果你使用的是虚拟主机可以考虑用curl函数来代替。
curl函数的使用示例:

复制代码 代码如下:

$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, ‘http://www.jb51.net');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

利用function_exists函数来判断php是否支持file_get_contents,否则用curl函数来代替。
PS
1、如果你的主机服务商把curl也关闭了,那你还是换个主机商吧!
2、allow_url_fopen设为off,并不代表你的主机不支持file_get_content函数。只是不能打开远程文件而已。function_exists(‘file_get_contents')返回的是true。所以网上流传的《file_get_contents函数不可用的解决方法》还是不能解决问题。
错误代码:

复制代码 代码如下:

if (function_exists(‘file_get_contents')) {
$file_contents = @file_get_contents($url);
}else{
$ch = curl_init();
$timeout = 30;
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);
}

应改为:

复制代码 代码如下:

if (function_exists(‘file_get_contents')) {//判断是否支持file_get_contents
$file_contents = @file_get_contents($url);
}
if ($file_contents == ”) {//判断$file_contents是否为空
$ch = curl_init();
$timeout = 30;
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);
}

最终代码:

复制代码 代码如下:

function file_get_content($url) {
if (function_exists(‘file_get_contents')) {
$file_contents = @file_get_contents($url);
}
if ($file_contents == ”) {
$ch = curl_init();
$timeout = 30;
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;
}

用法:
echo file_get_content(‘http://www.jb51.net');

时间: 2024-10-25 18:28:41

关于file_get_contents返回为空或函数不可用的解决方案_php技巧的相关文章

PHP 检查扩展库或函数是否可用的代码_php技巧

本文介绍的函数其实是PHP手册上本来就有的,但是由于这些函数独立性较强,查找不易,所以单独介绍一下,方便查阅. 1. 获取所有可用的模块 - get_loaded_extensions 该函数返回所有已经加载的(可用的)模块. 用法: 复制代码 代码如下: print_r(get_loaded_extensions()); 2. 获取指定模块的可用函数 - get_extension_funcs 该函数返回指定模块所有可用的函数.传入的参数(模块名称)必须是小写 用法: 复制代码 代码如下: p

php xml常用函数的集合(比较详细)_php技巧

1.DOM 函数 a.DOMDocument->load()作用:加载xml文件用法:DOMDocument->load( string filename )参数:filename,xml文件:返回:如果成功则返回 TRUE,失败则返回 FALSE. b.DOMDocument->loadXML()作用:加载xml代码用法:DOMDocument->loadXML( string source )参数:source xml代码:返回:如果成功则返回 TRUE,失败则返回 FALSE

深入PHP购物车模块功能分析(函数讲解,附源码)_php技巧

一,购物车概述购物车是为消费者在网上购物中提供一个临时存储商品的地方.其主要功能包括:添加商品.删除商品.更改商品数量.商品金额小计.商品金额总计和清空购物车:还包括生成订单.订单打印.订单预览.提交订单和取消购物等.购物车的操作流程:首先,登录到网站中浏览商品:然后,购买指定的商品,进入购物车页面中,在该页面可以实现更改商品数量.删除商品.清空购物车.继续购物等:最后,填写收货人信息,生成订单,订单打印.预览,提交订单等操作. 二,热点关键技术1,Smarty模块的安装配置smarty是一个使

基于php split()函数的用法详解_php技巧

PHP函数split()的基本语法为:array split ( string $pattern, string $string [, int $limit] ).我们向大家举了两个例子来具体讲解这个函数的使用方法. 对于初学者来说,掌握PHP中常用函数的用法,是其继续学习的基础.今天我们就为大家详细介绍有关PHP函数split()的一些使用方法,希望大家能通过这篇文章介绍的内容增加自己的知识库.说明array split ( string $pattern, string $string [,

PHP常用函数和常见疑难问题解答_php技巧

首先介绍下比较简单但必不可少且实用的知识,可以当手册查询,适合像我一样的新手看. PHP常用库函数介绍 一.PHP字符串操作常用函数1.确定字符串长度 int strlen(string str)2.比较两个字符串a. strcmp函数对两个字符串进行二进制安全的比较,并区分大小写int strcmp(string str1,string str2)b. 以不区分大小写的方式比较两个字符串int strcasecmp(string str1,string str2) 3.求两个字符串相同部分in

一些被忽视的PHP函数(简单整理)_php技巧

sys_getloadavg() 这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档.文档中有段示例代码,基本上也就能看出它的用途了. 复制代码 代码如下: <?php $load = sys_getloadavg(); if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try again

Php header()函数语法及使用代码_php技巧

语法: 复制代码 代码如下: Void header(string $string[,bool $replace=true [, int $http_response_code) 向客户端发送原始的HTTP报头需注意:Header函数必须在任何实际的输出前调用,无论是一般的html标签.文件中空行,或者来自php.就是在这个函数之前不能有任何形式的输出.参数说明: 参数 描述string 必需.规定要发送的报头字符串.replace 可选.指示该报头是否替换之前的报头,或添加第二个报头.默认是

php检测数组长度函数sizeof与count用法_php技巧

本文实例讲述了php检测数组长度函数sizeof与count用法.分享给大家供大家参考.具体如下: 在php检测数组长度的函数有sizeof count 下面看个简单实例: 复制代码 代码如下: $colorlist = array("apple"=>"red", "grass"=>"green","sky"=>"blue","night"=>

PHP5.5和之前的版本empty函数的不同之处_php技巧

作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处.洋洋洒洒写了以下代码,本地测试一切ok,到服务器上就SB了. 复制代码 代码如下: if(strlen($passwd) < 6 || empty($preg_replace("/\d/", "", $passwd))) {    //do something} 大致的意思就是,密码必须大于6位切不能只由数字组成.找遍服务器日志,发现如下错误: 复制代码 代码如下: PHP Fatal error: