fileperms
(PHP 4, PHP 5, PHP 7, PHP 8)
fileperms — Obtém permissões de arquivo
Parâmetros
filename
-
Caminho para o arquivo.
Valor Retornado
Retorna as permissões do arquivo em modo numérico. Os bits menos significativos deste modo
são os mesmos das permissões esperadas por chmod(),
entretanto na maioria das plataformas o valor de retorno também inclui informação sobre
o tipo do arquivo informado em filename
. Os exemplo
abaixo demonstram como testar o valor de retorno para permissões e tipos de arquivos
específicos em sistemas POSIX, incluindo Linux e macOS.
Para aquivos locais, o valor de retorno específico é o do membro
st_mode
da estrutura retornada pela função
stat() da biblioteca C. Exatamenta quais bits são definidos
pode variar de plataforma para plataforma, e é recomendado consultar a documentação
específica da plataforma se for necessária uma interpretação dos bits de não-permissão
do valor de retorno.
Retorna false
em caso de falha.
Erros/Exceções
Em caso de falha, um E_WARNING
será emitido.
Exemplos
Example #1 Mostra as permissões como um valor em octal
<?php
echo substr(sprintf('%o', fileperms('/tmp')), -4);
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
?>
O exemplo acima produzirá:
1777 0644
Example #2 Mostra as permissões completas
<?php
$perms = fileperms('/etc/passwd');
switch ($perms & 0xF000) {
case 0xC000: // socket
$info = 's';
break;
case 0xA000: // ligação simbólica
$info = 'l';
break;
case 0x8000: // regular
$info = 'r';
break;
case 0x6000: // bloco special
$info = 'b';
break;
case 0x4000: // diretório
$info = 'd';
break;
case 0x2000: // caractere especial
$info = 'c';
break;
case 0x1000: // tubo FIFO
$info = 'p';
break;
default: // desconhecido
$info = 'u';
}
// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
echo $info;
?>
O exemplo acima produzirá:
-rw-r--r--
Notas
Note: Os resultados desta função são armazenados em cache. Consulte a função clearstatcache() para mais detalhes.
A partir do PHP 5.0.0, esta função também pode ser usada com alguns wrappers URL. Consulte os Protocolos e empacotadores suportados para determinar quais wrappers suportam a família de funções stat().
Veja Também
- chmod() - Modifica as permissões do arquivo
- is_readable() - Diz se o arquivo existe e se ele pode ser lido
- stat() - Obtém informações sobre um arquivo