关于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反弹shell实现代码
Apr 22 PHP
Php图像处理类代码分享
Jan 19 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
php实现可运算的验证码
Nov 10 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
2010/02/09 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
奇妙的js
2007/09/24 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
基于python历史天气采集的分析
2019/02/14 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
外语专业毕业生自我评价分享
2013/10/05 职场文书
本科应届生自荐信
2014/06/29 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
Python 键盘事件详解
2021/11/11 Python
Hive HQL支持2种查询语句风格
2022/06/25 数据库