Lister dossier sur réseau

Petit nouveau ! | 3 Messages

02 déc. 2022, 12:40

Bonjour,

j'ai mon intranet qui tourne sur une VM avec un IIS.

J'ai mes lecteur réseau qui sont accessible et sont stocker plusieurs dossier commun.

Donc en PHP j'aimerais lister les dossiers d'un lecteur réseau par exemple : (\\192.168.5.54\dossier) ???

Lister les dossier local pas de soucis mais les dossiers sur un réseau je n'y arrive pas.

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9584 Messages

02 déc. 2022, 16:26

C'est une galère au niveau sécurité pour être sûr que l'utilisateur qui fait tourner Apache sur ta machine à bien les droits sur ton répertoire réseau Windows.

Mais si c'est le cas, tu as juste à doubler les antislashes pour les échapper et que ça devrait fonctionner (en croisant les doigts).
<?php
foreach(glob("\\\\192.168.5.54\\dossier\\*") as $fichier) echo $fichier."<br>";
##edit : correction du chemin pour ajouter *
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

02 déc. 2022, 16:32

C'est une galère au niveau sécurité pour être sûr que l'utilisateur qui fait tourner Apache sur ta machine à bien les droits sur ton répertoire réseau Windows.

Mais si c'est le cas, tu as juste à doubler les antislashes pour les échapper et que ça devrait fonctionner (en croisant les doigts).
<?php
foreach(glob("\\\\192.168.5.54\\dossier") as $fichier) echo $fichier."<br>";
J'ai déjà essayer et cela ne fonctionne pas par contre je peu activer certain droit mais mon admin réseau ma dit qu'il avais mis les droits. tu sais ou précisément je dois changer ? ou alors une autre solution ? merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9584 Messages

03 déc. 2022, 13:08

Petite erreur de ma part, j'avais oublié de terminer le chemin par \\* pour indiquer de lister tous les fichiers, c'est nécessaire pour la fonction glob()
Je viens de tester sur ma machine et ce code fonctionne :
<?php
foreach(glob("\\\\192.168.5.54\\dossier\\*") as $fichier) echo $fichier."<br>";
Si ça ne fonctionne pas, c'est probablement que l'utilisateur qui fait tourner Apache (qui n'est pas forcément celui de ta session Windows) n'a pas les droits ou un pb d'antivirus/firewall.
Quand tout le reste a échoué, lisez le mode d'emploi...