copier un fichier vers un autre serveur local

Eléphanteau du PHP | 10 Messages

19 oct. 2007, 15:17

Bonjour,

Voici mon problème.
Je voudrais simplement copier un fichier (test.php) d'un serveur vers un autre. Les deux serveurs sont sur le réseau local. J'ai les droits en lecture et en éciture sur les deux serveurs.

le code:

test.php

...
copy("img/test.jpg","//Argon4/img/test.jpg");
...

le message d'erreur:

Warning: move_uploaded_file(//Argon4/img/test.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\Lotus\Data\test.php on line 70

Je rappelle que j'ai bien les droits d'accès. Quelqu'un a une idée?

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 oct. 2007, 17:35

Bonjour,

Le problème vient du fait que tu tentes d'utiliser une adresse réseau Windows (qui d'ailleurs devrait commencer par 2 antislashes et pas 2 slashes) et je ne suis pas sûr que ce soit possible avec PHP...
Une solution alternative si tu as des serveurs FTP sur tes serveurs seraient de passer par le protocole FTP
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 2287 Messages

20 oct. 2007, 17:41

En complément de la réponse d'@rthur, tu auras peut-être de meilleurs résultats si tu accèdes à ton partage réseau windows par une lettre de lecteur virtuel. (Voir la commande NET USE sous windows 2000 et supérieur pour déclarer ce lecteur virtuel sur le système)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 443 Messages

20 oct. 2007, 17:55

Salut,

En fait rien n'indique dans la doc que l'opération est impossible:
Système de fichiers
/path/to/file.ext
relative/path/to/file.ext
fileInCwd.ext
C:/path/to/winfile.ext
C:\path\to\winfile.ext
\\smbserver\share\path\to\winfile.ext
file:///path/to/file.ext

Filesystem est le gestionnaire par défaut de PHP et il représente les fichiers locaux. Lorsqu'un chemin relatif est spécifié (un chemin qui ne commence pas par /, \, \\, ou une lettre de lecteur Windows), le chemin sera calculé relativement à la position courante. Dans de nombreux cas, c'est le dossier de résidence du script, à moins qu'il n'ait été modifié. En utilisant la version CLI, le chemin sera calculé par rapport au dossier d'appel du script.
Il faut creuser un peu...
D'abord pourquoi l'erreur est sur un move_uploaded_file(...) alors que c'est copy(...) qui est invoqué ??
Peux-tu mettre le code de ta ligne 70 ?


Tracker.

Eléphanteau du PHP | 10 Messages

22 oct. 2007, 09:34

Au temps pour moi, voici l'instruction et le message d'erreur exacts:


<?
copy("../img/admin/index/orli_index.gif","//Argon4/Intranet/data/domino/html/OrliPhp/classifieds_img/");
?>


Warning: copy(//Argon4/Intranet/data/domino/html/OrliPhp/classifieds_img/) [function.copy]: failed to open stream: Permission denied in D:\Lotus\Domino\Data\domino\html\Orli\admin\test.php on line 2

ViPHP
ViPHP | 2287 Messages

22 oct. 2007, 10:06

<?
copy("../img/admin/index/orli_index.gif","//Argon4/Intranet/data/domino/html/OrliPhp/classifieds_img/");
?>

Warning: copy(//Argon4/Intranet/data/domino/html/OrliPhp/classifieds_img/) [function.copy]: failed to open stream: Permission denied in D:\Lotus\Domino\Data\domino\html\Orli\admin\test.php on line 2
Je rappelle que j'ai bien les droits d'accès.
Si PHP te le dit, ça ne peut qu'être vrai :-) Tu as peut-être les permissions sur ton utilisateur courant, mais apparemment pas PHP. Il faut revoir la configuration des droits sur le partage, ou alors de l'utilisateur qui fait tourner PHP.
if(!@work()){ Nespresso(); } else { what(); }
______________________________