关于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 相关文章推荐
PHP 网页过期时间的控制代码
Jun 29 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
php curl的深入解析
Jun 02 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
php实现的SESSION类
Dec 02 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
php中序列化与反序列化详解
Feb 13 PHP
PHP通过curl获取接口URL的数据方法
May 31 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程序的php代码
2008/04/07 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
新闻内页-JS分页
2006/06/07 Javascript
关于图片验证码设计的思考
2007/01/29 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
python删除文件示例分享
2014/01/28 Python
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
用pycharm开发django项目示例代码
2019/06/13 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
机电专业个人自荐信格式模板
2013/09/23 职场文书
销售总经理岗位职责
2014/03/15 职场文书
李敖北大演讲稿
2014/05/24 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
高中班长竞选稿
2015/11/20 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS