Faire une copie toute simple en php mais sur le réseau

Petit nouveau ! | 3 Messages

14 janv. 2010, 11:15

Je galère pour essayer de copier le fichier :
\\domotique\repertoire\fichier1.txt
vers
\\domotique\repertoire\fichier2.txt

copy("\\domotique\repertoire\fichier1.txt","\\domotique\repertoire\fichier2.txt");

copy("\\\domotique\\repertoire\\fichier1.txt","\\\domotique\\repertoire\\fichier2.txt");


ne fonctionnent pas.

Pour info, il s'agit d'un réseau local, il n'y a aucun souci de droit d'accès.
Pouvez vous m'aider ?

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 janv. 2010, 12:11

Bonjour,

Je n'ai pas une réponse à ta question vu que c'est un cas de figure que je n'ai jamais mis en oeuvre.
Toutefois dans ta ligne ci dessous, tu doubles chaque antislash pour éviter qu'ils soient considérés comme un caractère d'échappement.
Donc pour la racine, il te faudrait 4 antislashs et non 3
copy("\\\\domotique\\repertoire\\fichier1.txt","\\\\domotique\\repertoire\\fichier2.txt");
Par ailleurs ce que tu pourrais essayer également (mais pas sûr que cela marche pour la racine) c'est de remplacer les antislashs par des slashs
copy("//domotique/repertoire/fichier1.txt","//domotique/repertoire/fichier2.txt");
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

14 janv. 2010, 13:50

Non, ni l'un ni l'autre ne fonctionne.

(J'ai même essayé de créer un disque réseau z:, ça ne fonctionne pas non plus.)

Ce qui fonctionne :
:arrow: copy("C:\\test.txt","C:\\test2.txt");

Ce qui ne fonctionne pas :

:arrow: copy("\\\\domotique\\repertoire\\fichier1.txt","C:\\test2.txt");
:arrow: copy("\\\domotique\\repertoire\\fichier1.txt","C:\\test2.txt");
:arrow: copy("\\domotique\repertoire\fichier1.txt","C:\\test2.txt");
:arrow: copy("//domotique/repertoire/fichier1.txt","C:\\test2.txt");

[function.copy]: failed to open stream: Permission denied

Visiblement, ce n'est pas qu'il ne trouve pas le fichier mais qu'il n'y a pas accès.

Eléphant du PHP | 168 Messages

14 janv. 2010, 15:35

Si tu travailles en local laisses le chemin absolu.
Sinon peut-être que tu te gourres dans ton arborescence ou encore qu'effectivemment tu ne disposes des permissions nécessaires à la lecture ou à l'écriture dans tes dossiers

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 janv. 2010, 16:39

Pour info, il s'agit d'un réseau local, il n'y a aucun souci de droit d'accès.
[function.copy]: failed to open stream: Permission denied
Bon alors effectivement c'est un problème de droit d'accès.

Après quelques recherches, il s'agit bien d'un soucis de permissions. Cf le dernier message de ce message qui donne quelques pistes : http://bugs.php.net/bug.php?id=25805
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

14 janv. 2010, 17:50

J'ai apache comme serveur, mais sorry, je n'ai pas compris ce qu'il fallait mettre en paramètre :?
L'anglais :cry:

Eléphant du PHP | 453 Messages

15 janv. 2010, 01:01

Hello,

Je pense aussi à une histoire de chmod(pour faire simple parce qu'il y a à dire dessus, mets comme second argument 777). N'oublie pas de faire un test dessus :
if(chmod(...))
...
else
...
À la place de la série d'anti-slash, essaie avec la constante prédéfini de PHP : DIRECTORY_SEPARATOR. ;)
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia