php打开文件fopen函数的使用说明


Posted in PHP onJuly 05, 2013

1.resource  fopen(string  $filename, string $mode [,bool $use_include_path [, resource $zcontext]])
函数功能:
fopen() 将 filename 指定的名字资源绑定到一个流上。如果filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将filename 当成一个普通的文件名继续执行下去。
如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者open_basedir 则会应用进一步的限制。

如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。

filename:规定要打开的文件或URL。
mode:规定要求到该文件/流的访问类型。
include_path:可选,如果也需要在include_path中检索文件的话,可以将该参数设为1或TRUE。
context:可选,规定文件句柄的环境,Context是可以修该流的行为的一套选项。

mode 参数的可能的值
mode  说明
"r"  只读方式打开,将文件指针指向文件头。
"r+"  读写方式打开,将文件指针指向文件头。
"w"  写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"w+"  读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"a"  写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"a+"  读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"x"  
创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

"x+"  
创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

Note:
不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用\n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。

如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。
Windows 下提供了一个文本转换标记('t')可以透明地将 \n 转换为 \r\n。与此对应还可以使用'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。

默认的转换模式依赖于 SAPI 和所使用的 PHP 版本,因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了\n 作为行结束符,但还要期望这些文件可以被其它应用程序例如 Notepad 读取,则在 mode 中使用 't'。在所有其它情况下使用'b'。

在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。

PHP 相关文章推荐
PHP+APACHE实现用户论证的方法
Oct 09 PHP
令PHP初学者头疼十四条问题大总结
Nov 12 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
PHP递归删除目录几个代码实例
Apr 21 PHP
ThinkPHP的URL重写问题
Jun 22 PHP
php字符串按照单词进行反转的方法
Mar 14 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 #PHP
如何利用PHP执行.SQL文件
Jul 05 #PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 #PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
Jul 05 #PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 #PHP
浅析PHP的ASCII码转换类
Jul 05 #PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 #PHP
You might like
php统计文章排行示例
2014/03/04 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
简单实现js菜单栏切换效果
2017/03/04 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
Python写的贪吃蛇游戏例子
2014/06/16 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
python使用turtle库绘制树
2018/06/25 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python有参函数使用代码实例
2020/01/06 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
初中生个人学习的自我评价
2013/12/04 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
整改通知书
2015/04/20 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android