fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。
如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了 安全模式 或者 open_basedir 则会应用进一步的限制。
如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。
注: 所支持的协议列表见附录 I。某些协议(也被称为 wrappers)支持 context 和 php.ini 选项。参见相应的页面哪些选项可以被设定。(也就是 php.ini 的值 user_agent 用在 http 协议中。)有关 contexts 和 zcontext 参数的说明,参见 参考 XCVIII, Stream functions。
mode 参数指定了所要求到该流的访问类型。可以是以下:
表格 1. fopen() 中的 mode 的可能值列表
mode | 说明 |
---|---|
'r' | 只读方式打开,将文件指针指向文件头。 |
'r+' | 读写方式打开,将文件指针指向文件头。 |
'w' | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'w+' | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 |
'a' | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
'a+' | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 |
注: mode 可以包括字母 'b',仅在区分二进制和文本文件的系统下有用(例如 Windows。在 UNIX 下没有用)。如果不需要将被忽略。鼓励用户包括 'b' 标记以使脚本具有更好的移植性。
如果也需要在 include_path 中搜寻文件的话,可以将可选的第三个参数 use_include_path 设为 '1' 或 TRUE。
如果打开失败,本函数返回 FALSE。
如果在用服务器模块版本的 PHP 时在打开和写入文件上遇到问题,记住要确保所使用的文件是服务器进程所能够访问的。
在 Windows 平台上,要小心转义文件路径中的每个反斜线,或者用斜线。
参见附录 I,fclose(),fgets(),fsockopen(),file(),file_exists(),is_readable(),socket_set_timeout() 和 popen()。