(PHP 4, PHP 5, PHP 7, PHP 8)
stat — Obtém informações sobre um arquivo
Coleta estatísticas do arquivo informado em filename
. Se filename
for uma ligação simbólica, estatísticas serão do próprio arquivo, não da ligação. Antes do PHP 7.4.0, nas compilações NTS do Windows, as estatísticas size
, atime
, mtime
e ctime
statistics são da ligação simbólica, neste caso.
lstat() é idêntica a stat() exceto que ela foi baseada no estado de ligações simbólicas.
filename
Caminho para o arquivo.
Numérico | Associativo | Descrição |
---|---|---|
0 | dev | número do dispositivo *** |
1 | ino | número do inode *** |
2 | mode | modo de proteção do inode ***** |
3 | nlink | número de ligações |
4 | uid | id de usuário do proprietário * |
5 | gid | id de grupo do proprietário * |
6 | rdev | tipo de dispositivo, se for inode |
7 | size | tamanho em bytes |
8 | atime | horário do último acesso (timestamp Unix) |
9 | mtime | horário da última modificação (timestamp Unix) |
10 | ctime | hora da última modificação do inode (timestamp Unix) |
11 | blksize | tamanho do bloco de E/S no sistema de arquivos ** |
12 | blocks | número de blocos de 512 bytes alocados ** |
* No Windows será sempre 0
.
** Válido apenas em sistemas que suportam o tipo st_blksize type - outros sistemas (ex.: Windows) retornam -1
.
*** No Windows, a partir do PHP 7.4.0, este é o número de série do volume que contém o arquivo, que é um inteiro de 64-bits sem sinal, ou seja, pode sobrecarregar. Anteriormente, era uma representação numérica da letra do dispositivo (ex.: 2
para C:
) para stat(), e 0
para lstat().
**** No Windows, a partir do PHP 7.4.0, este é o identificador associado com o arquivo, que é um inteiro de 64-bits sem sinal, ou seja, pode sobrecarregar. Anteriormente, era sempre 0
.
***** No Windows, o bit de permissão de escrita é definido de acordo com o atributo de somente-leitura do arquivo, e o mesmo valor é reportado para todos os usuários, grupos e proprietários. A ACL não é levada em consideração, contrário a is_writable().
O valor de mode
contém informação lida por várias funções. Quando escrita em octal, começando da direita, os primeiros três dígitos são retornados por chmod(). O dígito seguinte é ignorado pelo PHP. Os dois dígitos seguintes indicam o tipo de arquivo:
mode em octal | Significado |
---|---|
0140000 | socket |
0120000 | ligação |
0100000 | arquivo normal |
0060000 | dispositivo de bloco |
0040000 | diretório |
0020000 | dispositivo de caracteres |
0010000 | fifo |
0100644
e um diretório poderia ser 0040755
. Em caso de erro, stat() retorna false
.
Nota: Como o tipo inteiro do PHP possui sinal e muitas plataformas usam números inteiros de 32 bits, algumas funções do sistema de arquivos podem retornar resultados inesperados para arquivos maiores que 2GB.
Em caso de falha, um E_WARNING
é emitido.
Versão | Descrição |
---|---|
7.4.0 | No Windows, o número do dispositivo agora é o número de série do volume que contém o arquivo, e o número do inode é o identificador associado com o arquivo. |
7.4.0 | As estatísticas size , atime , mtime e ctime de ligações simbólicas agora são sempre aquelas do alvo. Anteriormente não era o caso para compilações NTS do Windows. |
Exemplo #1 stat() example
<?php
$stat = stat('C:\php\php.exe');
echo 'Horário de acesso: ' . $stat['atime'];
echo 'Horário de modificação: ' . $stat['mtime'];
echo 'Número de dispositivo: ' . $stat['dev'];
?>
Exemplo #2 Usando informação de stat() junto com a função touch()
<?php
$stat = stat('C:\php\php.exe');
if (!$stat) {
echo 'stat() falhou...';
} else {
$atime = $stat['atime'] + 604800;
if (!touch('some_file.txt', time(), $atime)) {
echo 'Falha ao tocar o arquivo...';
} else {
echo 'touch() retorno com sucesso...';
}
}
?>
Nota:
Note que a resolução de tempo pode variar de um sistema de arquivos para outro.
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().