Page 1 sur 1

Savoir si c'est un fichier caché ou non ?

Posté : 08 févr. 2021, 02:16
par Couin
Pouet pouuuueeeet :D

Je fais une page pour lister les fichier d'un répertoire.

Existe-t-il une fonction php pour savoir si un fichier à l’attribut "Fichier caché" ?

J'ai fouillé sur pas mal de forums mais je trouve pas d'info :(

Merkouin :D

Re: Savoir si c'est un fichier caché ou non ?

Posté : 08 févr. 2021, 11:06
par @rthur
PHP n'a pas de fonction pour faire cela directement vu que c'est spécifique à la plateforme Windows, mais tu peux exécuter les fonctions DOS standards en PHP avec exec() ou system()

Pour lister les fichiers cachés d'un répertoire, en DOS on fait :

Code : Tout sélectionner

dir /A:H
Du coup en PHP :
exec("dir \"".$path."\" /A:H /B", $result);
var_dump($result);
J'ai ajouté le paramètre /B pour simplifier la liste des résultats, mais libre à toi de tester déjà en commande DOS la manière de ce que tu veux récupérer. Tu peux voir tous les paramètres possibles en faisant sous DOS :

Code : Tout sélectionner

dir /?


Et si tu veux connaitre l'attribut spécifiquement d'un fichier, il faut que tu utilises la commande DOS "attrib" suivi du chemin du fichier, voici ce que cette fonction va te retourner pour chaque cas :

Code : Tout sélectionner

attrib C:\fichier_sans _attribut.txt A C:\fichier_sans _attribut.txt

Code : Tout sélectionner

attrib C:\fichier_cache.txt A H C:\fichier_cache.txt

Code : Tout sélectionner

attrib C:\fichier_cache_et_en_lecture_seule.txt A HR C:\fichier_cache_et_en_lecture_seule.txt
À toi de récupérer le résultat en PHP et de faire ton traitement en fonction de ce qui est retourné

Re: Savoir si c'est un fichier caché ou non ?

Posté : 08 févr. 2021, 20:53
par Couin
Hello :)

Merci pour ta réponse :)

Le serveur est un linux, je pense qu'il ne sera pas possible d'utiliser de commande DOS ?

Mais sur ce serveur linux, on peut y déposer via un partage Samba, des fichiers (cachés) venant de Windows, comme le Thumbs.db ou encore le .DS_Store qu'on a récupéré par exemple d'une clé USB sur laquelle on récupère un dossier depuis un Mac et il me semble que ce fichier est aussi caché (mais je n'en suis pas sûr pour celui -ci).

Et on les voit bien "cachés" quand on les parcours depuis un poste Windows, l'attribut est probablement stocké dans le fichier lui même.
Par contre un ls -lsa sur la console linux ne me donne pas d'information sur cet état.

Après ce n'est pas catastrophique, c'était surtout pour appliqué un style aux fichiers cachés, dans la liste générée par la page php.

Re: Savoir si c'est un fichier caché ou non ?

Posté : 08 févr. 2021, 23:14
par @rthur
Ah bah si tu ne donnes pas le contexte du premier coup aussi ! :-D

Voici comment Samba fait le mapping entre les attributs Linux et les attributs Windows, si j'en crois cette doc :
Image

Du coup tu devrais pouvoir le faire en ajoutant le droit d'exécution à tout le monde, via la fonction PHP chmod()
https://php.net/chmod

Re: Savoir si c'est un fichier caché ou non ?

Posté : 09 févr. 2021, 03:40
par Couin
Pouuuet !

Ah mais je ne veux pas changer l'attribut, je veux juste savoir si c'est un fichier caché ou non.

En, fait je liste un répertoire comme ca, avec des scandir :
Image

Par exemple le fichier .DS_Store qui est dans le sous répertoire "pic" est un fichier caché, j'aimerais pouvoir l'indiquer (soit en jouant sur la couleur du nom de fichier par exemple, ou autre je sais pas encore).

Re: Savoir si c'est un fichier caché ou non ?

Posté : 09 févr. 2021, 09:43
par @rthur
Bah mon explication est la même si tu ne veux pas changer la permission, mais juste la lire.
Tu peux utiliser la fonction PHP fileperms() pour voir les droits
https://php.net/fileperms

Sous Linux (et MacOS), tous les fichiers dont le nom commencent par un "." sont des fichiers cachés

Re: Savoir si c'est un fichier caché ou non ?

Posté : 12 févr. 2021, 03:34
par Couin
Pouik !!! lol

J'avais pris .DS_Store comme exemple mais Thumbs.db ou encore desktop.ini sont aussi des fichiers cachés.

En testant avec le fileperms, aucune différence de valeur entre caché et non caché.
Image

J'ai beau chercher en parallèle un peu partout je ne trouve rien permettant de faire la différence. Je pense que ca ne doti pas être possible du coup (bon c’est pas non plus capital, c'était juste pour customiser un peu le biniou lol ).

Re: Savoir si c'est un fichier caché ou non ?

Posté : 12 févr. 2021, 12:46
par @rthur
ça dépend de la configuration de ton serveur Samba.