Thanks to visit codestin.com
Credit goes to www.php.net

update page now

is_readable

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

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

说明

function 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() 来区分文件和目录。

参见

添加备注

用户贡献的备注 5 notes

up
9
jo at durchholz dot org
20 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
1
arikan134 at gmail dot com
10 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
1
pgl at yoyo dot org
16 years ago
Note that is_readable() will return false for streams, eg, php://stdin.
up
0
anrdaemon at yandex dot ru
1 day ago
Do note that is_readable/is_writable evaluates permissions in an attempt to produce the result.

This WILL fail in certain situations, while the file is actually accessible to the user, but manual evaluation fails to connect the dots.

The only trusted way to detect if a file is readable is to actually open it for reading. The only trusted way to detect if a file is writable is to actually open it for writing. And catche the error in case of failure.
up
0
johninen at gmail dot com
11 months ago
This will return false on urls, even if file_get_contents() reads them. So, only for files.
To Top