PHP判断文件/目录是否存在、是否可读的方法
在Web开发中,处理文件前通常需要先校验其状态,以防止因路径错误或权限不足导致的报错。本文将讲解如何使用PHP内置的 file_exists、is_readable 和 is_file 函数来准确判断文件及目录的存在性与可读性。
结果与目标
通过本文,您将掌握以下功能:
- file_exists():通用性地检查文件或目录是否存在。
- is_readable():专门检查指定文件是否可以被当前脚本进程读取(受权限控制)。
- is_file():严格区分路径是“普通文件”还是“目录”,排除目录造成的误判。
准备条件
确保您的PHP环境中已启用基本文件操作扩展,并拥有一个待测试的文件路径变量(如 $filename)。注意:如果文件涉及敏感操作,建议在执行读写前先进行备份或权限自查。
真实操作顺序
第1步:使用 file_exists() 检查基础存在性
目的:快速确认指定的路径(无论是文件还是目录)是否在磁盘上物理存在。
入口:file_exists(string $filename)
动作:传入目标文件路径,该函数会在文件系统层面查找该路径。
重要参数:$filename - 待检查的文件或目录路径。
完成状态:返回布尔值 TRUE 表示存在,FALSE 表示不存在。它不关心内容是否可读,只关心“有没有这个入口”。
<?php
$filename = 'jb51.net.php';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?>
第2步:使用 is_readable() 检查访问权限
目的:不仅文件存在,还需要确保当前执行脚本的用户拥有读取权限,避免后续打开文件时抛出 Warning 或 Error。
入口:is_readable(string $filename)
动作:系统会检查文件的权限位(Permission bits)。
重要参数:$filename - 需验证读取权限的文件路径。
完成状态:如果文件存在且可读,返回 TRUE;否则返回 FALSE(包括文件不存在、不可读等情况)。
<?php
$file = 'jb51.net.php';
if (is_readable($file) == false) {
die('文件不存在或者无法读取');
} else {
echo '存在且可读';
}
?>
第3步:使用 is_file() 排除目录干扰
目的有些场景下需要确保路径指向的是“一个具体的文件”而非“一个文件夹”。例如在处理图片上传或下载时。
入口:is_file(string $filename)
动作:判断路径是否存在且类型为常规文件(非目录、符号链接指向目录等)。
重要参数:$filename - 待验证的路径。
完成状态仅当路径是一个普通文件且存在时返回 TRUE。
<?php
$file = 'jb51.net.php';
if (is_file($file) == false) {
die('文件不存在或者不是一个常规文件');
} else {
echo '存在';
}
?>
简要总结
在实际项目中,建议优先使用 file_exists 做初步筛查,若需读取内容则叠加 is_readable 做权限校验,而在特定业务逻辑(如必须为文件)中使用 is_file 以增强健壮性。以上就是PHP判断文件是否存在、是否可读的详细方法,更多关于PHP文件操作的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













