fopen

(PHP 3, PHP 4 )

fopen -- 打开文件或者 URL

说明

resource fopen ( string filename, string mode [, int 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 的调用则失败。

注: 所支持的协议列表见附录 I。某些协议(也被称为 wrappers)支持 contextphp.ini 选项。参见相应的页面哪些选项可以被设定。(也就是 php.ini 的值 user_agent 用在 http 协议中。)有关 contextszcontext 参数的说明,参见 参考 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

例子 1. fopen() 例子

<?php
$handle = fopen ("/home/rasmus/file.txt", "r");
$handle = fopen ("/home/rasmus/file.gif", "wb");
$handle = fopen ("http://www.example.com/", "r");
$handle = fopen ("ftp://user:password@example.com/somefile.txt", "w");
?>

如果在用服务器模块版本的 PHP 时在打开和写入文件上遇到问题,记住要确保所使用的文件是服务器进程所能够访问的。

在 Windows 平台上,要小心转义文件路径中的每个反斜线,或者用斜线。

<?php
$handle = fopen ("c:\\data\\info.txt", "r");
?>

参见附录 Ifclose()fgets()fsockopen()file()file_exists()is_readable()socket_set_timeout()popen()