关于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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
php的计数器程序
Oct 09 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
处理单名多值表单的详解
Jun 08 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
Yii框架登录流程分析
Dec 03 PHP
PHP面向对象程序设计类的定义与用法简单示例
Dec 27 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP实现的数据对象映射模式详解
Mar 20 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
第七节 类的静态成员 [7]
2006/10/09 PHP
php cookie 登录验证示例代码
2009/03/16 PHP
用javascript实现画板的代码
2007/09/05 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
javascript的函数作用域
2014/11/12 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
python的即时标记项目练习笔记
2014/09/18 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python协程之动态添加任务的方法
2019/02/19 Python
python 元组的使用方法
2020/06/09 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
一道输出判断型Java面试题
2014/10/01 面试题
珠宝店促销方案
2014/03/21 职场文书
大一新生期末自我评价
2014/09/12 职场文书
离婚协议书范文2014
2014/10/16 职场文书
婚前财产协议书范本
2014/10/19 职场文书
区域经理岗位职责
2015/02/02 职场文书
校运会加油稿大全
2015/07/22 职场文书
工作报告范文
2019/06/20 职场文书
mysq启动失败问题及场景分析
2021/07/15 MySQL