关于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 相关文章推荐
改进的IP计数器
Oct 09 PHP
PHP COOKIE及时生效的方法介绍
Feb 14 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php使用cookie保存登录用户名的方法
Jan 26 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
php TP5框架生成二维码链接
Apr 01 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
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
php格式化json函数示例代码
2016/05/12 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python中的with...as用法介绍
2015/05/28 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Python更新所有已安装包的操作
2020/02/13 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
四查四看自我剖析材料
2014/09/19 职场文书
项目安全员岗位职责
2015/02/15 职场文书
机械生产实习心得体会
2016/01/22 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
React四级菜单的实现
2022/04/08 Javascript
Python何绘制带有背景色块的折线图
2022/04/23 Python