[PHP] Problème d'ouverture de dossier

Résolu/Fermé
xXPika74Xx - 19 mai 2009 à 15:16
 xXPika74Xx - 20 mai 2009 à 16:37
Bonjour,
Je voudrait faire un petit programme en PHP et le but actuelle et de stocker les valeurs d'un fichier texte dans un tableau et ensuite de me servir de ces valeurs pour ouvrir un dossier.
Ce fichier texte contient des emplacements du genre:
C:\Fichier\Test1
C:\Fichier\Test2
C:\Fichier\Test3

et je stock chaqu'un de ces emplacement dans un variable de type tableau comme ceci:

$fichier_source = fopen("fichier_source.txt", "r"); // On ouvre le fichier texte fichier_source
$nbr_element_source = 0;
$Source = array ();


while(!feof($fichier_source)) //Tant que l'on est pas a la fin du fichier...
{
$ligne = fgets($fichier_source, 4096); // on récupère chaque ligne du fichier texte
$Source[$nbr_element_source] = $ligne;
$nbr_element_source++;
echo $nbr_element_source;

}
fclose($fichier_source);


Normalement ceci doit marcher car lorsque j'affiche les valeur avec echo comme ceci:

echo $Source[0];
echo $Source[1];
echo $Source[2];

cela affiche bien les valeurs qui sont censer y être stocker c'est à dire:

C:\Fichier\Test1
C:\Fichier\Test2
C:\Fichier\Test3

le problème et juste après lors de l'ouverture du dossier grâce a ces valeurs récupéré lorsque je test mon programme:

if($dossier = opendir($Source[0])) // on ouvre le dossier dons l'adresse et récupéré dans le fichier texte
{
echo 'coucou';
}
else
{
echo 'Le dossier n\' a pas pu être ouvert';
}

Lorsque je test avec $Source[2] dans le opendir le dossier s'ouvre bien et m'affiche coucou mais lorsque j'essaye avec $Source[0] ou $Source[1] cela ne fonctionne plus j'ait fait plusieur test les valeur du tableaux s'affiche toute avec echo quelque soit leurs nombres mais seul la dernière valeur stocker fonctionne pour l'ouverture du dossier.

Si quelqu'un pouvait m'aider sa me sauverai sa fait des heures que je cherche sans comprendre quel est le problème :(

Merci d'avance ^^
A voir également:

7 réponses

xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 mai 2009 à 16:19
C:\Fichier\Test1
C:\Fichier\Test2
C:\Fichier\Test3

Si tu as pour optique d'ouvrir (lire) des fichiers sur le poste de tes clients: ce n'est pas possible via php.
Par contre si tu souhaite ouvrir des fichiers de ton serveur, essaye avec un chemin relatif:

Par exemple, sur un serveur wamp (dossier "www" dans c:\wamp):
../../Fichier/Test2

Si ton but était d'ouvrir des fichiers text chez tes clients, cela est simplement impossible en php, pour des raisons évidentes de sécurité (je n'aimerai pas qu'un site web puisse lire mon fichier "rapel-de-mes-password.txt", par exemple, ni mon fichier de cookie)

Si c'était bien ton but, je te conseil d'allé voir l'utilisation de l'objet ActiveX (fonctionnel uniquement sous IE (et c'est d'ailleur l'une de ces plus grosse faille)). Il me semble qu'il est également possible de le faire par un applet java, mais je ne sais pas comment.

Bonne chance.
0
En faite ce n'est pas pour un site internet c'est un petit logiciel php a utiliser pour une entreprise dans lequels je fait mon stage

En faite eux vont juste saisir les sources et les destination sur des fichier texte et lancer le logiciel,avec le logiciel moi je récupère ces donnée pour copier les fichier de l'emplacement récupéré sur le fichier texte source pour les copier a l'emplacement récupéré dans le fichier texte destination

Mon but pour l'instant et juste d'accéder a ces dossier a partir du fichier texte je veut juste stocker ces variable dans un tableaux pour plus tard les utiliser avec une boucle for mais pour mes test comme je l'ait dit seul Source[2] noter dans le code me valide l'ouverture mais si je saisie Source[0] ou Source[1] ben le dossier ne veut pas s'ouvrir donc je comprend pas pourquoi les valeur stocker dans mon tableaux ne fonctionne pas toute comme Source[2] je ne sais pas si sais tout simplement pas possible ou si c'est un problème d'utilisation de mon tableaux ou même ailleur j'ait tout essayer mais....
0
A mon avis le problème se situe au niveaux de l'initialisation de mon tableaux lorsque je stocke les valeurs dans le tableaux car si je marque dans le code:

$Source[0] = 'C:\Program Files\EasyPHP 2.0b1\www\Tristan\Test1';
$Source[1] = 'C:\Program Files\EasyPHP 2.0b1\www\Tristan\Test2';

la lorsque je remplace par source[1] ou source[0] dans le opendir la le dossier veut bien s'ouvrir

aller comprendre :/
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 mai 2009 à 17:17
Alors attends, je suis un peu paumé la.

1] Ton "logiciel" tourne sur un serveur web et est accessible par un navigateur web (donc une application pas un logiciel, et c'est l'équivalent d'un site web) ou c'est un logiciel (compilé avec php-gtk) qui s'exécute directement chez le client (un fichier.exe) ?

2] le fichier que tu lis ("fichier_source.txt"), est quand à lui sur le serveur ?

3] les dossiers qui tu essaye d'atteindre de ton serveur sont sur le serveur ou chez le client ?


4] Dis moi si je me trompe, mais pour le moment je comprends la chose comme ça:
- le client écris un fichier texte.
- le client se rends sur l'adresse internet, et dois uploader (?) sont fichier texte.
- l'application récupère les chemins d'accès aux fichier contenu dans le fichier texte
- l'application devrais déplacer ces fichiers ?

Ce qui me turlupine surtout, ce sont les fichier qui doivent êtres déplacer, ils se trouvent où ceux-ci ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Non en faite y'a aucun rapport avec internet.

Je suppose que se sera un fichier.exe mais je savais même pas qu'on pouvait utiliser le php hors html mais en gros je t'explique ce que j'ait comprit:

en faite y'a une chaine de construction et chaque ordinateur fait par jour des fichier ou il répertorie les erreurs.

En faite il veulent grâce au fichier texte que l'entreprise aura saisie lancer ce programme pour qu'il aille récupéré les fichier d'erreur de chaque ordinateur de la chaine pour tous les mettre dans un autre dossier

en gros tous reste sur leurs serveurs a eux.

j'espère que je t'ait éclaircie ^^

pour l'instant je veut juste savoir pourquoi la valeur du type (c:/**/**/test) stocker dans mon tableaux ne veut pas marcher dans le opendir

$dossier = opendir($Source[2]) ==> le dossier s'ouvre tout va bien

mais le problème et pour toute les valeur censer être stocker avant:

$dossier = opendir($Source[0]) ==> impossible d'ouvrir le dossier
$dossier = opendir($Source[1]) ==> impossible d'ouvrir le dossier

alors que quand je test voir la valeur de mes variable avec echo:

echo $Source[0];
echo $Source[1];
echo $Source[2];

cela m'affiche bien:

c:/**/**/test1
c:/**/**/test2
c:/**/**/test3

Donc comprend pas pourquoi la valeur veut pas être utiliser dans le opendir
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
20 mai 2009 à 10:25
D'accord, enfait il s'agit d'un programme de "scan de log" enfait.

Un serveur récupère les lignes des fichiers sur d'autres machines, et essaye d'ouvrir les dossiers inscrits dedans, c'est bien ça hein ? ^^

Dans ce cas tout s'éclaire :)
Enfait, les fichiers que tu scan sont écris automatiquement par les machines, pour cette même machines: les chemins qui sont écrits dedans sont prévu pour cette machine, pas pour le serveur.
comme c'est ton serveur qui essaye d'ouvrir les dossiers, il cherche sur son propre disque dur, et non sur celui des machines.
$Source2 s'ouvre par-ce que le dossier dois également exister sur le serveur, simplement.

Tu peux essayé de faire un partage réseaux du disque dur, autorisé en accès uniquement pour le serveur, voir (la sécurité de Windows étant merdique) essaye d'acceder aux machine par \\xxx.xxx.xxx.xxx\c$ ça peut macher.


0
En faite le rpoblème était plus simple que sa lorsque je stockais mes sources par ligne il sotckais aussie le retour chariot donc pour avoir l'adresse exacte il suffisait simplement de le supprimer

Merci quand même ;)
0