(PHP 4, PHP 5, PHP 7, PHP 8)
fileperms — Obtém permissões de arquivo
filename
Caminho para o arquivo.
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.
Em caso de falha, um E_WARNING
será emitido.
Exemplo #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
Exemplo #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--
Nota: 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 Wrappers suportados para determinar quais wrappers suportam a família de funções stat().