关于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实现文件下载更能介绍
Nov 23 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
php生成excel列名超过26列大于Z时的解决方法
Dec 29 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
PHP四种基本排序算法示例
Apr 09 PHP
十大使用PHP框架的理由
Sep 26 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
php 使用expat方式解析xml文件操作示例
Nov 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
星际争霸中的热键
2020/03/04 星际争霸
索尼ICF-SW100收音机评测
2021/03/02 无线电
php中长文章分页显示实现代码
2012/09/29 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
js实现下一页页码效果
2017/03/07 Javascript
require.js中的define函数详解
2017/07/10 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
React SSR样式及SEO的实践
2018/10/22 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python每隔N秒运行指定函数的方法
2015/03/16 Python
python访问系统环境变量的方法
2015/04/29 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
python中if及if-else如何使用
2020/06/02 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
Python操作Excel的学习笔记
2021/02/18 Python
Etam德国:内衣精品店
2019/08/25 全球购物
公共场所标语
2014/06/30 职场文书
2015年新教师工作总结
2015/04/28 职场文书
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL