Lister le contenu d'un lien symbolique linux

Eléphanteau du PHP | 25 Messages

22 août 2015, 18:10

Bonjour,

je souhaite lister le contenu de ce lien symbolique crée sur linux (lien vers un repertoire) :
ln -s /volume1/video/ LienFilm
Tout d'abord j'ai tenté de lister le contenu avec la fonction opendir(), mais celle-ci attends un répertoire et non un lien, elle tombe en erreur.
J'ai ensuite tester ceci :
<?php
readlink(./LienFilm)
?>
Sans succès.

Avez-vous la méthode pour ouvrir/lister un lien symbolique linux ?

ynx
Mammouth du PHP | 586 Messages

24 août 2015, 11:40

Salut,

Tu peux essayer avec la fonction glob : http://php.net/manual/fr/function.glob.php

Mais comme pour opendir(), le fait de renseigner le chemin d'un vrai dossier ou d'un lien symbolique ne devrait pas avoir de différence.

Bonne journée,

Eléphanteau du PHP | 25 Messages

29 août 2015, 03:08

Bonjour,

je viens d'essayer et la fonction ne fonctionne pas sur un lien symbolique.

J'ai appelé mon lien symbolique "toto" --> Fonctionne pas, vu qu'il attend la forme nom.extension
J'ai essayé en créant un lien toto.redirect pour simuler un fichier --> ne fonctionne pas non plus.

le code ci-dessous :
foreach (glob("*.redirect") as $filename) 
{
	echo "$filename \n";
}
ps : le chemin complet + /*.* ne fonctionne pas non plus.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 août 2015, 09:52

Bonjour,

Normalement glob() fonctionne correctement avec les liens symboliques.
Toutefois si un lien symbolique est incorrect/cassé, glob() va l'ignorer
Quand tout le reste a échoué, lisez le mode d'emploi...

ynx
Mammouth du PHP | 586 Messages

31 août 2015, 11:57

Un lien symbolique n'as pas nécessairement besoin d'une extension.

Tu peux essayer le code suivant, pour l'exemple le lien symbolique est crée en PHP :
mkdir('dossiertest');
symlink('dossiertest', 'toto');

foreach (glob('toto') as $filename) {
	echo $filename . ' est un lien symbolique ? ' . is_link($filename);
}