(PHP 4, PHP 5, PHP 7, PHP 8)
is_readable — Indica si un fichero existe y es accesible en lectura
Indica si un fichero existe y es accesible en lectura.
filenameRuta hacia el fichero.
Devuelve true si el fichero o el directorio especificado por
filename existe y es accesible en lectura,
false en caso contrario.
En caso de fallo, se emitirá una advertencia de tipo E_WARNING .
Ejemplo #1 Ejemplo con is_readable()
<?php
$filename = 'test.txt';
if (is_readable($filename)) {
echo 'El fichero es accesible en lectura';
} else {
echo 'El fichero no es accesible en lectura !';
}
?>No se olvide que PHP accede a los ficheros con los mismos permisos que el usuario que ejecuta el servidor web (a menudo, es 'nobody', nadie).
Nota: Los resultados de esta función se almacenan en caché. Véase la función clearstatcache() para más detalles.
A partir de PHP 5.0.0, esta función también puede ser utilizada con algunos protocolos url. Lea Protocolos y Envolturas soportados para conocer los protocolos que soportan la familia de funcionalidades de stat() .
Nota:
La verificación se realiza utilizando el UID/GID real en lugar del efectivo.
Esta función puede devolver true para los directorios.
Utilice la función is_dir() para distinguir
los ficheros y los directorios.
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.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));
}
}
?>Note that is_readable() will return false for streams, eg, php://stdin.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.This will return false on urls, even if file_get_contents() reads them. So, only for files.