PHP: is_readable - Manual
(PHP 4, PHP 5, PHP 7, PHP 8)
is_readable — Tells whether a file exists and is readable
Parameters
filename-
Path to the file.
Return Values
Returns true if the file or directory specified by
filename exists and is readable, false otherwise.
Errors/Exceptions
Upon failure, an 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 for directories. Use
is_dir() to distinguish file and directory.
See Also
- is_writable() - Tells whether the filename is writable
- file_exists() - Checks whether a file or directory exists
- fgets() - Gets line from file pointer
Found A Problem?
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.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));
}
}
?>16 years ago
Note that is_readable() will return false for streams, eg, php://stdin.1 month 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.1 year ago
This will return false on urls, even if file_get_contents() reads them. So, only for files.