Pour les exemples, nous utiliserons le dossier test_fichiers avec le contenu et l'arborescence ci-contre.

Ce dossier se trouve dans le dossier test du tutoriel. Vous pouvez voir son contenu avec le bouton dans la barre de menu du tutoriel.

Si vous ne voyez pas ce dossier, ou si vous voulez le ré-initialiser utilisez ce script.

Parmi toutes les informations que nous pouvons obtenir sur un fichier, voici celles utilisées le plus souvent :

- la taille du fichier avec filesize() ,
- la date de dernière modification avec filemtime(),
- les droits et permissions avec fileperms(),
- accessible en lecture avec is_readable(),
- accessible en écriture avec is_writable().

Remarque : pour une liste exhaustives des fonctions d'information, voir la documentation technique.

Exemple : informations fichier
<?php ob_start(); require('bib_fonctions.php'); //====================================================== /** * Renvoie des informations sur un fichier * @param string $fichier Fichier * @return array Tableau associatif d'informations */ function fichierInfos($fichier) { $t = array('file' => '---'); if (!file_exists($fichier)) { return $t; } $t['file'] = is_file($fichier) ? 'oui' : 'non'; $t['size'] = filesize($fichier); $t['date'] = filemtime($fichier); $t['perm'] = fileperms($fichier); $t['read'] = is_readable($fichier) ? 'oui' : 'non'; $t['write'] = is_writable($fichier) ? 'oui' : 'non'; return $t; } //====================================================== htmlDebut('Information sur un fichier'); $fichier = 'test_fichiers/images/diapo1.jpg'; htmlInfo($fichier); $f = fichierInfos($fichier); infoTableau($f); $fichier = 'test_fichiers/images'; htmlInfo($fichier); $f = fichierInfos($fichier); infoTableau($f); htmlFin(); ?>

On remarquera que la fonction filesize() appliquée à un dossier ne renvoie pas sa taille mais 0.

La date de dernière modification est un timestamp qui peut être formatée avec la fonction date() (par exemple : date('d/m/Y H:i:s',filemtime($fichier));).

Les permissions doivent être décodées en utilisant l'opérateur de bits & comme dans l'exemple suivant.

Exemple : informations fichier
<?php ob_start(); require('bib_fonctions.php'); //====================================================== /** * Permissions d'un fichier sous forme ls -l unix/linux * @param integer $perm Permissions renvoyée par fileperms() * @return string permissions comme le début de ls -l */ function fichierPerms($perm) { // Determine le type if($perm & 0x1000) $type='p'; // FIFO pipe else if($perm & 0x2000) $type='c'; // Caractères else if($perm & 0x4000) $type='d'; // Dossier else if($perm & 0x6000) $type='b'; // Bloc else if($perm & 0x8000) $type='-'; // Fichier else if($perm & 0xA000) $type='l'; // Lien else if($perm & 0xC000) $type='s'; // socket else $type='u'; // inconnu // r = read / w = write / x = execute // Determine les permissions du propriétaire $prop['r'] = ($perm & 00400) ? 'r' : '-'; $prop['w'] = ($perm & 00200) ? 'w' : '-'; $prop['x'] = ($perm & 00100) ? 'x' : '-'; // Determine les permissions du groupe du propriétaire $groupe['r'] = ($perm & 00040) ? 'r' : '-'; $groupe['w'] = ($perm & 00020) ? 'w' : '-'; $groupe['x'] = ($perm & 00010) ? 'x' : '-'; // Determine les permissions des autres utilisateurs $autres['r'] = ($perm & 00004) ? 'r' : '-'; $autres['w'] = ($perm & 00002) ? 'w' : '-'; $autres['x'] = ($perm & 00001) ? 'x' : '-'; // Ajuste SUID, SGID et sticky bit if($perm & 0x800) { $prop['x'] = ($prop['x']=='x') ? 's' : 'S'; } if($perm & 0x400) { $groupe['x'] = ($groupe['x']=='x') ? 's' : 'S'; } if($perm & 0x200) { $autres['x'] = ($autres['x']=='x') ? 't' : 'T'; } return $type .$prop['r'].$prop['w'].$prop['x'] .$groupe['r'].$groupe['w'].$groupe['x'] .$autres['r'].$autres['w'].$autres['x']; } //====================================================== /** * Renvoie des informations sur un fichier * @param string $fichier Fichier * @return array Tableau associatif d'informations */ function fichierInfos($fichier) { $t = array('file' => '---'); if (!file_exists($fichier)) { return $t; } $t['file'] = is_file($fichier) ? 'oui' : 'non'; $t['size'] = filesize($fichier); $t['date'] = date('d/m/Y H:i:s', filemtime($fichier)); $t['perm'] = fichierPerms(fileperms($fichier)); $t['read'] = is_readable($fichier) ? 'oui' : 'non'; $t['write'] = is_writable($fichier) ? 'oui' : 'non'; return $t; } //====================================================== htmlDebut('Information sur un fichier'); $fichier = 'test_fichiers/images/diapo1.jpg'; htmlInfo($fichier); $f = fichierInfos($fichier); infoTableau($f); $fichier = 'test_fichiers/images'; htmlInfo($fichier); $f = fichierInfos($fichier); infoTableau($f); htmlFin(); ?>