rechercher dans les sous-dossiers avec glob()

Petit nouveau ! | 2 Messages

18 juin 2013, 08:02

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 !

ViPHP
ViPHP | 2577 Messages

18 juin 2013, 09:53

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.

Petit nouveau ! | 2 Messages

18 juin 2013, 09:56

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é

Eléphant du PHP | 160 Messages

18 juin 2013, 10:17

Bonjour,

Ne faut-il pas sortir les variable des quotes ?

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

ViPHP
ViPHP | 2577 Messages

18 juin 2013, 11:33

...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.