is_readable

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

is_readableDiz se o arquivo existe e se ele pode ser lido

Descrição

function is_readable(string $filename): bool

Diz se o arquivo existe e se ele pode ser lido

Parâmetros

filename

Caminho do arquivo.

Valor Retornado

Retorna true se o arquivo ou diretório especificado por filename existe e pode ser lido, false do contrário.

Erros/Exceções

Em caso de falha, um E_WARNING será emitido.

Exemplos

Exemplo #1 Exemplo de is_readable()

<?php
$filename
= 'teste.txt';
if (
is_readable($filename)) {
echo
'O arquivo pode ser lido.';
} else {
echo
'O arquivo não pode ser lido.';
}
?>

Notas

Lembre-se que o PHP pode acessar o arquivo como o usuário com o qual o servidor web é executado (geralmente 'nobody').

Nota: Os resultados desta função são armazenados em cache. Consulte a função clearstatcache() para mais detalhes.

Dica

A partir do PHP 5.0.0, esta função também pode ser usada com alguns empacotadores de URL. Consulte os Protocolos e empacotadores suportados para determinar quais empacotadores suportam a família de funções stat().

Nota:

A verificação é feita usando os UID/GID reais ao invés dos efetivos.

Essa função pode retornar true para diretórios. Use a is_dir() para diferenciar entre arquivo e diretório.

Veja Também

adicionar nota

Notas de Usuários 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
8 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
1 year ago
This will return false on urls, even if file_get_contents() reads them. So, only for files.
To Top