«

PHP检查文件是否存在

时间:2026-10-22 07:10     作者:emer     分类: 无


PHP检查文件是否存在

引言

上传头像、读取配置、缓存命中判断之前,都要先确认文件是否存在。PHP里file_exists判断文件或目录,is_file专门判断普通文件,is_dir判断目录,三者语义不同,用错会把目录当成文件导致后续读取报错。

file_exists 判断存在

$path = './config/config.php';
if (file_exists($path)) {
    echo '文件存在';
} else {
    echo '文件不存在';
}

文件或目录存在都返回true,路径不存在、权限不可访问返回false。

is_file 判断是普通文件

if (is_file($path)) {
    echo '这是一个普通文件';
}

目录、符号链接、管道都返回false,读取文件前用它最稳妥。

is_dir 判断目录

$dir = './uploads';
if (is_dir($dir)) {
    echo '目录存在';
}

专门判断目录,适合上传前检查目录是否已建。

判断可读性再操作

if (is_file($path) && is_readable($path)) {
    $content = file_get_contents($path);
}

存在不代表可读,权限不足时file_get_contents会警告,先加is_readable判断。

路径拼接注意

$file = __DIR__ . '/../data/' . $name;

用绝对路径拼接,避免相对路径受当前工作目录影响,跨目录包含时不容易找错文件。

注意事项

总结

file_exists判断文件或目录是否存在,is_file判断普通文件,is_dir判断目录,is_readable/is_writable判断读写权限。读取配置、上传文件、缓存命中前先做存在性和权限判断。注意clearstatcache清理状态缓存,用户传入文件名要防路径穿越,跨目录用DIR拼绝对路径,避免相对路径偏移导致找错文件。

标签: PHP 文件上传 file_exists is_file 文件判断