is_readable

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

is_readableIndica si un fichero existe y es accesible en lectura

Descripción

function is_readable(string $filename): bool

Indica si un fichero existe y es accesible en lectura.

Parámetros

filename

Ruta hacia el fichero.

Valores devueltos

Devuelve true si el fichero o el directorio especificado por filename existe y es accesible en lectura, false en caso contrario.

Errores/Excepciones

En caso de fallo, se emitirá una advertencia de tipo E_WARNING.

Ejemplos

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 !';
}
?>

Notas

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.

Sugerencia

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.

Ver también

  • is_writable() - Indica si un fichero es accesible en escritura
  • file_exists() - Verifica si un fichero o un directorio existe
  • fgets() - Recupera la línea actual a partir de la posición del puntero de archivo

add a note

User Contributed Notes 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
2 days 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