is_file() 是判断普通文件最可靠的PHP函数,它仅在路径存在且为常规文件时返回true,自动解析符号链接并包含存在性检查,无需预检file_exists()。
用 is_file() 判断是否为普通文件最可靠
PHP 中判断一个路径是否指向「普通文件」(即非目录、非链接、非设备文件等),is_file() 是唯一推荐的内置函数。它只在目标存在且是常规文件时返回 true,其他情况(包括符号链接指向目录、不存在、权限不足)一律返回 false。
常见错误是误用 file_exists() 或 is_readable():前者对目录也返回 true,后者在文件不可读但存在时可能出错,且不区分类型。
-
is_file()会自动解析符号链接,返回其最终指向是否为普通文件 - 若需保留链接本身(不解析),应配合
is_link()单独判断 - 调用前无需
file_exists()预检——is_file()本身已包含存在性检查,多此一举反而降低性能
stat() 的 mode 字段可手动验证文件类型
当需要更底层控制(例如在 opendir() 遍历中批量判断),可结合 stat() 获取文件元信息,再通过 mode 字段位运算识别类型。
关键点在于:普通文件的 mode 必须同时满足两个条件——存在且不为目录、不为链接、不为 socket/pipe/device 等特殊文件。