stat
(PHP 4, PHP 5, PHP 7, PHP 8)
stat — Renvoie les informations à propos d'un fichier
Description
lstat() est identique à
stat() sauf que les informations seront alors basées
sur le lien symbolique.
Liste de paramètres
filename
-
Le chemin vers le fichier.
Valeurs de retour
Format du résultat de stat() et
fstat()
Numéro |
Nom |
Description |
0 |
dev |
volume (***) |
1 |
ino |
Numéro d'inode (****) |
2 |
mode |
droit d'accès à l'inode ***** |
3 |
nlink |
nombre de liens |
4 |
uid |
userid du propriétaire (*) |
5 |
gid |
groupid du propriétaire (*) |
6 |
rdev |
type du volume, si le volume est une inode |
7 |
size |
taille en octets |
8 |
atime |
date de dernier accès (Unix timestamp) |
9 |
mtime |
date de dernière modification (Unix timestamp) |
10 |
ctime |
date de dernier changement d'inode (Unix timestamp) |
11 |
blksize |
taille de bloc (**) |
12 |
blocks |
nombre de blocs de 512 octets alloués (**) |
* - Sous Windows, ceci sera toujours 0
.
** - uniquement sur les systèmes qui supportent le type st_blksize
.
Les autres systèmes (e.g. Windows) retournent -1
.
*** - Sous Windows, depuis PHP 7.4.0, ce sera le numéro de série du volume qui
contient le fichier, qui sera un entier 64-bit non signé
qui peut déborder. Auparavant, c'était la représentation numériques de la lettre
du volume (i.e. 2
pour C:
) pour la fonction
stat(), et 0
pour la fonction
lstat().
**** - Sous Windows, depuis PHP 7.4.0, c'est l'identifiant associé avec le fichier,
qui sera un entier 64-bit non signé qui peut déborder.
Auparavant, c'était toujours 0
.
***** Sous Windows, le bit de la permission d'écriture est définit en
fonction de l'attribut lecture seule du fichier, et la même valeur est
rapporté pour tout les utilisateurs, groupe, et propriétaire.
L'ACL n'est pas pris en compte, contrairement à is_writable().
La valeur de mode
contient des informations lut par
plusieurs fonctions. Quand écrit en octal, commençant par la droite,
les trois premiers chiffres sont retournés par chmod().
Le prochain chiffre est ignoré par PHP. Les deux prochains chiffres indiquent
le type de fichier :
Les types de fichiers mode
mode en octal |
Signification |
0140000 |
socket |
0120000 |
lien symbolique |
0100000 |
fichier régulier |
0060000 |
périphérique bloc |
0040000 |
dossier |
0020000 |
périphérique de caractère |
0010000 |
FIFO (un tube nommé) |
Ainsi, par exemple, un fichier régulier pourrait être
0100644
et un dossier pourrait
0040755
.
En cas d'erreur, stat() retourne false
.
Note:
Comme le type entier de PHP est signé et que de nombreuses plates-formes
utilisent des entiers de 32 bits, certaines fonctions relatives au système
de fichiers peuvent retourner des résultats étranges pour les fichiers de
taille supérieure à 2 Go.
Erreurs / Exceptions
Si une erreur survient, une alerte de type
E_WARNING
est émise.
Exemples
Exemple #1 Exemple avec stat()
<?php
/* Récupération des informations */
$stat = stat('C:\php\php.exe');
/*
* Affichage de la date et heure de l'accès à ce fichier,
* identique à l'appel à la fonction fileatime()
*/
echo 'Date et heure d\'accès : ' . $stat['atime'];
/*
* Affiche de la date et heure de modification du fichier,
* identique à l'appel à la fonction filemtime()
*/
echo 'Date et heure de modification : ' . $stat['mtime'];
/* Affichage du numéro du device */
echo 'Numéro du Device : ' . $stat['dev'];
?>
Exemple #2 Utilisation des informations issues de stat()
conjointement avec la fonction touch()
<?php
/* Récupération des informations issues de la fonction stat */
$stat = stat('C:\php\php.exe');
/* L'accès aux informations a-t-il échoué ? */
if (!$stat) {
echo 'L\'appel à stat() a échoué...';
} else {
/*
* Nous voulons que la date et heure d'accès soit d'une
* semaine après la date courante.
*/
$atime = $stat['atime'] + 604800;
/* Touchons le fichier ! */
if(!touch('some_file.txt', time(), $atime)) {
echo 'Échec lors de l\'appel à la fonction touch()...';
} else {
echo 'L\'appel à touch() a réussi...';
}
}
?>
Notes
Note:
Notez que la précision temporelle peut varier selon le système de fichiers utilisé.
Note:
Les résultats de cette fonction sont mis en cache.
Voyez la fonction clearstatcache() pour plus de détails.
Voir aussi
- lstat() - Retourne les informations sur un fichier ou un lien symbolique
- fstat() - Lit les informations sur un fichier à partir d'un pointeur de fichier
- filemtime() - Lit la date de dernière modification du fichier
- filegroup() - Lire le nom du groupe
- SplFileInfo