Page 1 sur 1

rechercher dans les sous-dossiers avec glob()

Posté : 18 juin 2013, 08:02
par anarchoi
J'ai un serveur avec des tas de fichiers dans plusieurs dossiers, sous-dossiers et sous-sous-dossiers.

Je tente de faire une page recherche.php qui sera utilisée pour faire une recherche afin de trouver un fichier spécifique qui peut être dans un dossier, un sous-dossier ou un sous-sous-dossier.
Si le fichier est trouvé, alors le script doit afficher le lien de téléchargement de ce fichier.

Voici ce que j'ai jusqu'à maintenant:
$root = $_SERVER['DOCUMENT_ROOT'];
$search = "test.zip";
$found_files = glob("$root/*/test.zip");
$downloadlink = str_replace("$root/", "", $found_files[0]);
if (!empty($downloadlink)) {
echo "<a href=\"http://www.mydomain.com/$downloadlink\">$search</a>";
}
Le code fonctionne parfaitement si le fichier à trouver est dans la racine du domaine. Mais ça ne fonctionne pas si le fichier est dans un sous-dossier ou un sous-sous-dossier

Pouvez vous m'aider à modifier le script pour qu'il puisse localiser le chemin d'un fichier même si il est dans un sous-dossier ou un sous-sous-dossier ?

Merci !

Re: rechercher dans les sous-dossiers avec glob()

Posté : 18 juin 2013, 09:53
par Mazarini
Il faudrait que tu affiches les variables $root, $found_files[0] et $downloadlink pour que l'on ait une idée du problème.
En fonction du fichier recherché, tu connais la valeur que doit prendre ces variables. En comparant avec la valeur calculée tu verras tout de suite l'erreur.

Re: rechercher dans les sous-dossiers avec glob()

Posté : 18 juin 2013, 09:56
par anarchoi
Il faudrait que tu affiches les variables $root, $found_files[0] et $downloadlink pour que l'on ait une idée du problème.
En fonction du fichier recherché, tu connais la valeur que doit prendre ces variables. En comparant avec la valeur calculée tu verras tout de suite l'erreur.
...toutes les valeurs des variables sont dans l'extrait du code que j'ai posté

Re: rechercher dans les sous-dossiers avec glob()

Posté : 18 juin 2013, 10:17
par Lyssorus
Bonjour,

Ne faut-il pas sortir les variable des quotes ?

$found_files = glob($root."/*/test.zip");
$downloadlink = str_replace($root."/", "", $found_files[0]);

Re: rechercher dans les sous-dossiers avec glob()

Posté : 18 juin 2013, 11:33
par Mazarini
...toutes les valeurs des variables sont dans l'extrait du code que j'ai posté
Je ne vois pas ce que contient $found_files[0] comme chaine de caractères.
Il faudrait que tu ajoutes echo $found_files[0]; pour que sache son contenu. $found_files = glob("$root/*/test.zip"); n'est pas suffisant car dépendant de ta machine.