关于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调用三种数据库的方法(3)
Oct 09 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
php 生成短网址原理及代码
Jan 23 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
PHP常用的三种设计模式
Feb 17 PHP
YII框架批量插入数据的方法
Mar 18 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
js 调用父窗口的具体实现代码
2013/07/15 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
python开发之list操作实例分析
2016/02/22 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
作弊检讨书1000字
2014/02/01 职场文书
读书演讲主持词
2014/03/18 职场文书
小学生毕业评语
2014/12/26 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
2014年度个人总结范文
2015/03/09 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
Nginx 匹配方式
2022/05/15 Servers
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers