fopen()

1. 定义

打开一个指定的文件或 URL。 如果 PHP 的allow_url_fopen未被打开,那么打开一个 URL 时fopen()调用失败。 成功时返回一个资源类型的流(具有流式行为的资源对象)。

2. 语法

fopen ( string $filepath , string $mode [, bool $use_include_path = false [, resource $context ]] ) : resource

3. 参数说明

参数 可选性 数据类型 描述
$filepath 必需 字符串 要打开的文件路径或URL路径
$mode 必需 字符串 指定访问类型
$use_include_path 可选 布尔值 是否需要在include_path中查找,默认为false
$context 可选 资源类型 资源流上下文

4. 示例

<?php

// fopen()
// 打开一个指定的文件或 URL

$mode_r = 'r';// “只读”模式(read),并将文件指针指向文件头
$mode__r2 = 'r+';// “读写”模式(read+),并将文件指针指向文件头
$mode_w = 'w';// “写入”模式(write),文件指针指向文件头,并清空文件内容,文件不存在时则尝试创建
$mode_w2 = 'w+';// “读写”模式(write+),文件指针指向文件头,并清空文件内容,文件不存在时则尝试创建
$mode_a = 'a';// “写入”模式(attemp),将文件指针指向文件末尾。如果文件不存在则尝试创建
$mode_a2 = 'a+';// “读写”模式(attmp),将文件指针指向文件末尾。如果文件不存在则尝试创建
$mode_x = 'x';// “创建并写入”模式,将文件指针指向文件头,如果文件存在则返回FALSE,不存在则尝试创建
$mode_x2 = 'x+';// “创建并读写”模式,将文件指针指向文件头,如果文件存在则返回FALSE,不存在则尝试创建
$mode_c = 'c';// “写入”模式,将文件指针指向文件头,文件不存在时尝试创建。通常用于“咨询文件锁定”(flock()函数)
$mode_c2 = 'c+';// “读写”模式,将文件指针指向文件头,文件不存在时尝试创建。通常用于“咨询文件锁定”(flock()函数)

$filepath = __FILE__;// 文件存在
$handle = fopen($filepath, $mode_r);
var_dump($handle);// 输出:resource(5) of type (stream)

$filename = 'jisu.php';// 文件不存在
$handle = @fopen($filename, $mode_r);
// Warning:  fopen(jisu.php): failed to open stream: No such file or directory
if($handle) {
    echo '文件打开成功!',"\n";
} else {
    echo '文件打开失败!',"\n";
}
// 文件打开失败!

$url = 'https://www.jisuapi.com/';
$handle = fopen($url, $mode_r);
var_dump($handle);// 输出:resource(6) of type (stream)

fclose($handle);

5. 延展阅读

  • fclose():关闭通过fopen()fsockopen()函数打开的文件句柄
  • fgets():从文件指针处读取一行字符,直到遇到换行符、文件末尾或者函数参数列表中指定的长度($length - 1)后停止
  • fread():读取指定长度的通过fopen()函数打开的文件内容
  • fwrite():将数据写入到指定文件,在写到指定长度的数据或者写完所有数据时停止运行
  • file():将文件读入数组。返回以文件行号为索引的数组
  • file_exists():检查指定的文件或目录是否存在,存在则返回TRUE,不存在则返回FALSE
  • is_readable():判断指定的文件或目录是否可读
  • popen():打开一个指向进程的管道,只允许单向的读或者写
  • umask():设置系统的umask掩码的值