PHP is_file()函数

is_file() 函数用于检查指定的文件是否存在并且是一个常规文件(不是目录或链接)。

语法

bool is_file ( string $filename )

参数说明

参数 描述
filename 必需。规定要检查的文件路径。

返回值

如果文件存在且是一个常规文件,返回 TRUE,否则返回 FALSE

注意:is_file() 仅用于文件系统,不支持 URL 包装器。如果文件不存在,会返回 FALSE。

示例1:基本用法

检查文件是否存在:

<?php
$file = 'test.txt';

if (is_file($file)) {
    echo "文件 '$file' 存在。";
} else {
    echo "文件 '$file' 不存在。";
}
?>

示例2:配合其他文件函数使用

检查文件是否存在并获取文件大小:

<?php
$filename = 'data.csv';

if (is_file($filename)) {
    $size = filesize($filename);
    echo "文件 '$filename' 存在,大小为: " . number_format($size) . " 字节";

    // 检查是否可读
    if (is_readable($filename)) {
        echo ",并且可读。";
    }
} else {
    echo "文件 '$filename' 不存在。";
}
?>

示例3:与is_dir()对比

区分文件和目录:

<?php
$path = 'uploads';

if (is_file($path)) {
    echo "'$path' 是一个文件。";
} elseif (is_dir($path)) {
    echo "'$path' 是一个目录。";

    // 列出目录中的文件
    $files = scandir($path);
    echo "<br>目录包含: " . implode(', ', $files);
} else {
    echo "'$path' 既不是文件也不是目录,或不存在。";
}
?>

示例4:批量检查多个文件

检查多个文件是否存在:

<?php
$files = [
    'config.php',
    'database.php',
    'README.md',
    'logs/'
];

echo "文件检查结果:<br><br>";

foreach ($files as $file) {
    if (is_file($file)) {
        echo "✓ $file - 是文件<br>";
    } elseif (is_dir($file)) {
        echo "📁 $file - 是目录<br>";
    } else {
        echo "✗ $file - 不存在<br>";
    }
}
?>

重要注意事项

  1. 文件权限:如果文件存在但没有读取权限,is_file() 仍然会返回 TRUE,但其他文件操作可能会失败。
  2. 符号链接:如果参数是指向文件的符号链接,is_file() 会返回 TRUE(前提是链接指向的文件存在)。
  3. 缓存:PHP 会对文件状态进行缓存,可以使用 clearstatcache() 清除缓存。
  4. 相对路径:相对路径是相对于当前工作目录,可以使用 getcwd() 查看当前目录。
  5. URL:不支持 http:// 或 ftp:// 等 URL 包装器,请使用 file_exists() 配合 URL 包装器。

相关函数

file_exists()

检查文件或目录是否存在

is_dir()

检查是否是一个目录

is_readable()

检查文件是否可读