PHP: Hypertext Preprocessor (original) (raw)

is_readable

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

is_readable — Tells whether a file exists and is readable

Description

Parameters

filename

Path to the file.

Return Values

Returns [true](reserved.constants.php#constant.true) if the file or directory specified byfilename exists and is readable, [false](reserved.constants.php#constant.false) otherwise.

Errors/Exceptions

Upon failure, an [E_WARNING](errorfunc.constants.php#constant.e-warning) is emitted.

Examples

Example #1 is_readable() example

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

Notes

Keep in mind that PHP may be accessing the file as the user id that the web server runs as (often 'nobody').

Note: The results of this function are cached. See clearstatcache() for more details.

Note:

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

This function may return [true](reserved.constants.php#constant.true) for directories. Useis_dir() to distinguish file and directory.

See Also

Found A Problem?

jo at durchholz dot org

19 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.

pgl at yoyo dot org

15 years ago

Note that is_readable() will return false for streams, eg, php://stdin.

arikan134 at gmail dot com

9 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(objects = scandir(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));

}
}

?>`