is_readable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_readable判断给定文件名是否可读

说明

is_readable(string $filename): bool

判断给定文件名是否存在并且可读。

参数

filename

文件的路径。

返回值

如果由 filename 指定的文件或目录存在并且可读则返回 true,否则返回 false

错误/异常

失败时抛出 E_WARNING 警告。

示例

示例 #1 is_readable() 例子

<?php
$filename
= 'test.txt';
if (
is_readable($filename)) {
echo
'The file is readable';
} else {
echo
'The file is not readable';
}
?>

注释

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制。

注意: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

小技巧

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

注意:

The check is done using the real UID/GID instead of the effective one.

对于目录这个函数可能会返回 true。请使用 is_dir() 来区分文件和目录。

参见

add a note add a note

User Contributed Notes 4 notes

up
11
jo at durchholz dot org
18 years ago
DrTebi at yahoo dot com is wrong. is_readable() checks whether you can do file_get_contents() or similar calls, no more, no less. If the location given returns a 500 or 403 error, you can still read() that (you'll simply get the error page), but it's still read()able. Using is_readable to check the validity of a URL is simply the wrong function.
up
0
arikan134 at gmail dot com
8 years ago
is readable recursively. Check all sub directories and files readable
<?php
function is_readable_r($dir) {
    if (
is_dir($dir)) {
        if(
is_readable($dir)){
           
$objects = scandir($dir);
            foreach (
$objects as $object) {
                if (
$object != "." && $object != "..") {
                    if (!
is_readable_r($dir."/".$object)) return false;
                    else continue;
                }
            }   
            return
true;   
        }else{
            return
false;
        }
       
    }else if(
file_exists($dir)){
        return (
is_readable($dir));
       
    }
}

?>
up
0
pgl at yoyo dot org
15 years ago
Note that is_readable() will return false for streams, eg, php://stdin.
up
-40
Anonymous
19 years ago
Sometimes in situations where file_exists fails (returns false even though the file does exist) stat will work.
To Top