PHP | fopen 函数

Lasted 2021-01-05 19:41:24

fopen 函数打开文件或者 URL。

fopen() 函数将 filename 指定的名字资源绑定到一个流上。如果没有文件访问权限会发出警告,函数操作成功时返回 true,失败时返回 false。

函数定义

fopen ( string $filename , string $mode , bool $use_include_path = false , resource $context = ? ) : resource
// 源文件位于:ext/standard/file.c
# 函数定义

PHP_FUNCTION(fopen)
{
  ...
  context = php_stream_context_from_zval(zcontext, 0);

  stream = php_stream_open_wrapper_ex(filename, mode, (use_include_path ? USE_PATH : 0) | REPORT_ERRORS, NULL, context);

  if (stream == NULL) {
    RETURN_FALSE;
  }

  php_stream_to_zval(stream, return_value);
}

参数

  • checkfilename - 文件路径,可以是 URL 格式。
  • checkmode - 访问类型。
    • 'r' 只读方式打开,将文件指针指向文件头。
    • 'r+' 读写方式打开,将文件指针指向文件头。
    • 'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    • 'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    • 'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    • 'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    • 'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 false,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
    • 'c' 以写方式打开文件。
    • 'c+' 以读写方式打开文件。

返回值

  • checkstring - 操作成功时返回 true,失败时返回 false。如果打开失败,会产生一个 E_WARNING 错误。可以通过 @ 来屏蔽错误。

示例1: - 使用 fopen() 函数打开文件。

<?php
/**
 * PHP fopen() 函数打开文件。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 以读写方式打开文件
// 屏蔽错误
$fp = @fopen('foo.txt', 'r+');

// 判断文件是否打开成功
// if ($fp === false) {}
// if(is_resource($fp)) {}