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


Posted in PHP onJune 24, 2013

如果你使用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, ‘https://3water.com');
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(‘https://3water.com');
PHP 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
PHP 面向对象详解
Sep 13 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
培养自己的php编码规范
Sep 28 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
PHP+MySQL实现消息队列的方法分析
May 09 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 PHP
解析php addslashes()与addclashes()函数的区别和比较
Jun 24 #PHP
解析PHP中ob_start()函数的用法
Jun 24 #PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 #PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 #PHP
解析crontab php自动运行的方法
Jun 24 #PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 #PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 #PHP
You might like
支持中文的php加密解密类代码
2011/11/27 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
为数据添加append,remove功能
2006/10/03 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
js实现tab切换效果
2017/02/16 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
结束运行python的方法
2020/06/16 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
python中PyQuery库用法分享
2021/01/15 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
应用心理学个人的求职信
2013/12/08 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
六查六看剖析材料
2014/10/06 职场文书