Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lister un repertoire local

26 réponses
Avatar
Legeais Vincent
[Xpost afclp & fclp ; fu2 fclp]

Bonjour,

Je sais lister le contenu d'un répertoire distant, c'est à dire qui se
trouve au même endroit que le script php sur le serveur.

Par contre j'essaie de lister un répertoire local... mais en vain !
Je m'explique.
Je met mon script de listage en ligne sur le serveur qui m'héberge.
Ce script appelle la fonction de listage, mais au lieu d'avoir comme nom
de répertoire à lister quelque chose comme "photos" je met "C:/album/photos"
Et j'obtient alors l'erreur suivante :

Warning: opendir(C:/album/photos): failed to open dir: No such file or
directory in liste.php on line 24

Quelqu'un peut-il m'expliquer comment faire, svp ?
Merci

--
Vincent

10 réponses

1 2 3
Avatar
Olivier Miakinen

Je sais lister le contenu d'un répertoire distant, c'est à dire qui se
trouve au même endroit que le script php sur le serveur.

Par contre j'essaie de lister un répertoire local... mais en vain !
[...]

Warning: opendir(C:/album/photos): failed to open dir: No such file or
directory in liste.php on line 24

Quelqu'un peut-il m'expliquer comment faire, svp ?


Quelques pistes pour avancer :
- vérifier que C:/album/photos est effectivement un répertoire
- voir si ce ne serait pas c:/album/photos ou C:/ALBUM/PHOTOS
- vérifier que le programme PHP a le droit d'y accéder
- essayer avec "C:/", "C:/album", "C:/album/"
- essayer avec "../../../../../../album/photos"
- essayer avec "file:///C:/album/photos/"

Tu nous tiens au courant ?

Avatar
Vincent Lascaux
Par contre j'essaie de lister un répertoire local... mais en vain !
Je m'explique.
Je met mon script de listage en ligne sur le serveur qui m'héberge.


Tu vois pas comme un problème de sécurité à pouvoir lire le contenu du
disque dur de n'importe quelle personne qui se connecte à ton site ? Donc
non, on ne peut pas... (sauf à utiliser des extensions ? avec du java, en
demandant le bon niveau de sécurité...)

Pourquoi tu veux faire ca ?

--
Vincent

Avatar
Antoine Polatouche
Quelques pistes pour avancer :
- vérifier que C:/album/photos est effectivement un répertoire
- voir si ce ne serait pas c:/album/photos ou C:/ALBUM/PHOTOS
- vérifier que le programme PHP a le droit d'y accéder
- essayer avec "C:/", "C:/album", "C:/album/"
- essayer avec "../../../../../../album/photos"
- essayer avec "file:///C:/album/photos/"


et avec anti slash? c:albumphotos

Avatar
Legeais Vincent
Quelques pistes pour avancer :
- vérifier que C:/album/photos est effectivement un répertoire


oui

- voir si ce ne serait pas c:/album/photos ou C:/ALBUM/PHOTOS


ok

- vérifier que le programme PHP a le droit d'y accéder


le php tourne chez mon hébergeur et C:/ est sur mon ordi perso sous
windows 98 SE
Donc a priori pas de problème d'accès...

- essayer avec "C:/", "C:/album", "C:/album/"


Même C:/ ne marche pas :(

- essayer avec "../../../../../../album/photos"


...

- essayer avec "file:///C:/album/photos/"


pas mieux...

Tu nous tiens au courant ?


2 choses à rajouter :

1) Quand je fait tourner mon script sur mon ordi avec easyphp, ça marche
bien (je peux lister C:/ ou n'importe qui d'autre).
Mais dès que je met mon script en ligne chez mon hébergeur, ça plante !

2) J'ai essayé de réduire au minimum.
Voici un script hyper simple :

<?
$rep="C:/";
opendir($rep);
?>

Et on obtient :

Warning: opendir(C:/): failed to open dir: No such file or directory in
test.php on line 3

Déjà si quelqu'un arrivait à modifier ces 2 lignes pour qu'elles
fonctionnent, je crois que ça résoudrait le problème...

--
Vincent

Avatar
Pozzo
Legeais Vincent wrote:
Par contre j'essaie de lister un répertoire local... mais en vain !
Je m'explique.
Je met mon script de listage en ligne sur le serveur qui m'héberge.
Ce script appelle la fonction de listage, mais au lieu d'avoir comme nom
de répertoire à lister quelque chose comme "photos" je met
"C:/album/photos"
Et j'obtient alors l'erreur suivante :


Euh... si je comprends bien :

Vous avez un serveur A avec un serveur Web et PHP dessus...

Vous avez un ordinateur B avec un navigateur (IE ou Firefox ou autre)

Vous arrivez à afficher sur B dans votre navigateur une page fournie par
A qui liste le contenu d'un répertoire sur A

Vous n'arrivez PAS à afficher sur B dans votre navigateur une page
fournie par A qui listerait le contenu d'un répertoire sur B

...

Si c'est ça je trouve que c'est parfaitement normal...

Le serveur web en php est incapable d'accéder "par magie" à votre poste
client. A la rigueur on pourrait imaginer que cela fonctionne si vous
autorisez un partage windows sur votre disque C de votre machine client
(B) et que le serveur (A) y accède via Samba... mais ça me semble plutôt
dangereux en dehors d'un contexte intranet...

Pour faire ce que vous voulez, il faudrait plutot envisager :

1/ Une applet Java
2/ Du javascript signé (du javascript normal n'aura probablement pas le
droit de faire ça ?)
3/ Installer un 2e serveur web sur votre poste client local (B) et faire
dialoguer en HTTP A et B
4/ Oublier cette idée ;-)

--
Pozzo

Avatar
Pozzo
Legeais Vincent wrote:
- vérifier que le programme PHP a le droit d'y accéder


le php tourne chez mon hébergeur et C:/ est sur mon ordi perso sous
windows 98 SE
Donc a priori pas de problème d'accès...


Si au contraire ! Un serveur web ne peut pas accéder "comme ça" au
contenu d'un disque d'un autre ordinateur... Cf mon autre réponse complête.

--
Pozzo


Avatar
Olivier Miakinen

- vérifier que le programme PHP a le droit d'y accéder


le php tourne chez mon hébergeur et C:/ est sur mon ordi perso sous
windows 98 SE


Ah, il fallait le dire tout de suite, que le « C: » en question n'est
pas local au serveur, mais distant, sur le poste du visiteur !

Tu n'as probablement pas compris la différence entre un langage comme
PHP qui tourne sur le serveur, et un autre comme JavaScript qui tourne
sur le poste client : <http://faqfclphp.free.fr/#rub2.3&gt;.

Ça n'a donc aucune chance de marcher avec PHP (avec JavaScript tout seul
non plus, mais pour d'autres raisons).

Donc a priori pas de problème d'accès...


Bien au contraire, *aucun* accès n'est possible.


Avatar
venerzen
Legeais Vincent a formulé ce mercredi :
[Xpost afclp & fclp ; fu2 fclp]

Bonjour,

Je sais lister le contenu d'un répertoire distant, c'est à dire qui se trouve
au même endroit que le script php sur le serveur.

Par contre j'essaie de lister un répertoire local... mais en vain !
Je m'explique.
Je met mon script de listage en ligne sur le serveur qui m'héberge.
Ce script appelle la fonction de listage, mais au lieu d'avoir comme nom de
répertoire à lister quelque chose comme "photos" je met "C:/album/photos"
Et j'obtient alors l'erreur suivante :

Warning: opendir(C:/album/photos): failed to open dir: No such file or
directory in liste.php on line 24

Quelqu'un peut-il m'expliquer comment faire, svp ?
Merci


Ben ton répertoire ne se trouve pas sur c:
Regarde au niveau des variables serveur ($_SERVER). Tu y trouveras
normalement le chemin complet vers tes scripts.

Avatar
O.L.
[Xpost afclp & fclp ; fu2 fclp]

Bonjour,

Je sais lister le contenu d'un répertoire distant, c'est à dire qui se trouve
au même endroit que le script php sur le serveur.

Par contre j'essaie de lister un répertoire local... mais en vain !
Je m'explique.
Je met mon script de listage en ligne sur le serveur qui m'héberge.
Ce script appelle la fonction de listage, mais au lieu d'avoir comme nom de
répertoire à lister quelque chose comme "photos" je met "C:/album/photos"
Et j'obtient alors l'erreur suivante :

Warning: opendir(C:/album/photos): failed to open dir: No such file or
directory in liste.php on line 24

Quelqu'un peut-il m'expliquer comment faire, svp ?
Merci


Logiqe ! PHP s'exécute côté serveur, il ne peut absolument pas savoir
ce qui se trouve sur le PC du client ...

Pour faire ça, il faudrait passer par l'objet ActiveX nommé
FileSystemObject (pour IE seulement). Google est ton ami ...
Mais cette solution posera problème chez ceux qui ont un navigateur
paramétré en mode "parano" : il ne posera même pas la question à
l'utilisateur de savoir s'il accepte ou non que ton JavaScript aille
fouiller sur le disque dur, il bloquera tout net.

@+

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net

Avatar
Legeais Vincent
Pourquoi tu veux faire ca ?


Mon script, à partir du nom d'un répertoire contenant des photos
d'identité, crée un trombinoscope.
Quand je fait tourner mon script sur mon ordi (avec easyphp) je réussis
à me faire de très beaux trombinoscopes en moins de 2.

Mon but est de mettre mon script à disposition des gens sur mon site
pour qu'ils puissent créer leur propre trombinoscope en ayant juste sur
leur ordi un répertoire avec des photos (et qu'ils n'aient pas à
installer un serveur apache chez eux !)

Concrètement : quelqu'un vient sur mon site, rentre le chemin local à
son ordi vers son répertoire de photos (exemple : C:/2006/photos) et ça
lui crée son trombinoscope !

Y a-t-il un moyen autre pour pouvoir faire cela ?
Merci.

--
Vincent

1 2 3