IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

move_uploaded_file vers NAS ou serveur distant


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 43
    Points
    43
    Par défaut move_uploaded_file vers NAS ou serveur distant
    Bonjour,

    je rencontre un petit soucis avec la fonction move_uploaded_file lorsque je veux envoyer mon fichier sur un autre serveur ou le fichier partagé d'un NAS.
    je précise qu'il s'agit d'une application interne et que le serveur apache et le NAS sont sur le même réseau local.

    Avec l'explorer, il suffit de faire \\adresseNAS\fichierPartage pour y accèder.

    Je voudrais en gros faire un :

    move_uploaded_file($_FILES["nomInput"]["tmp_name"],"\\\\adresseNAS\\fichierPartage\\".$nomDuFichier);

    Mais cela ne marche pas... quelqu'un aurait-il une solution à ce problème sans mettre en place ftp,nfs ou autre ?

    Merci d'avance !!!

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    A mon avis, te prends pas la tête avec ces anti-slash, car sur un OS comme Linux, c'est le slash /, et un système comme Microsoft accepte les 2.
    Autant utiliser que des slash (plus besoin d'échapper) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    move_uploaded_file($_FILES['nomInput']['tmp_name'], 'adresseNAS/fichierPartage/'.$nomDuFichier);
    Par contre, il faut que le chemin soit bon.
    Donc question : Est tu sûr du chemin ?

    Ceci dit, les "cela ne marche pas" ne veut rien dire, au mieux, il est déposer nulle part, sinon, ça génère une erreur (faut indiquer l'erreur).

    Juste avant le move_uploaded_file, fait un print_r($_FILES), pour voir ce que ça contient.
    Faut au moins savoir si le fichier à bien été déposé dans le répertoire temporaire.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 43
    Points
    43
    Par défaut
    Salut,

    le fichier temp est bien généré sur le serveur, je reçois le message d'erreur suivant (désolé un oubli de ma part

    Warning: move_uploaded_file(192.168.0.9/project/CARTES/fichier.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in ...

    Pour accèder à ce partage sous windobe, je fais simplement dans l'explorer :
    \\192.168.0.9\project\CARTES\ mais sur le serveur cela ne marche pas ...

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    No such file or directory
    Ca veut dire que Php n'a pas trouvé de fichier ni de répertoire par rapport au chemin indiqué.

    Le chemin que tu indique n'est pas bon, ou éventuellement tu n'aurais pas les droits.

    Donc question : Ce chemin est il bon ?
    Que signifie : 192.168.0.9 dans ce chemin ?
    Normalement ce n'est pas une URL qui faut indiquer, mais un chemin relatif (par rapport où on se trouve), ou alors un chemin physique (/home/.../fichier.pdf ou C:/.../fichier.php)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 43
    Points
    43
    Par défaut
    Oui le chemin est bon.
    Les droits sont 777 sur le partage.

    L'ip correspond à l'ip du NAS sur lequel je veux envoyer mon fichier.

    Je ne peux pas indiquer de chemin relatif car je veux envoyer le fichier sur une autre ip (le NAS) que la où se trouve mon fichier temp.

    Mon problème est que je ne connais pas la syntaxe pour faire cela.

    J'ai essayé avec :

    \\192.168.0.9\\...
    File://192.168.0.9/...
    192.168.0.9\\....
    192.168.0.9/...
    J'ai également essayé de créer un lecteur réseau pour y accéder avec:
    P:\\CARTES\\....
    P:/CARTES/...

    Aucune de ces syntaxe ne marchent...

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Mouais ... les problème liés au réseau, ce n'est pas du tout dans mes cordes

    Au niveau de la syntaxe, à mon sens des slash ça doit être bon.

    Après, ce serait un pure problème de chemin, comment atteindre ton disque.
    Donc à mon sens c'est le chemin qui va pas.
    Enfin, sans aucune certitude.

    Comment fais tu pour atteindre ce dossier partagé en partant du disque C:/.../dossier_partage/ (théoriquement, au autre qui sait) et non d'un chemin que je qualifierais de virtuel (192.168...).


    Fais un essai sur un répertoire de ta machine, dans C:/rep_essai/fichier.pdf (par exemple)
    Tu seras fixé sur la syntaxe, et constaté aussi que le fichier est bien déposé.
    Ca sera déjà ça.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 43
    Points
    43
    Par défaut
    Comme je disais, sous windows j'y accède via :

    \\192.168.0.9\project\CARTES\

    ou

    P:\CARTES\ via un lecteur réseau

    Sur le serveur lui-même aucun problème pour déplacer le fichier.
    Mais je me demande si php ne bloque pas les accès sur d'autres machines physique. Si quelqu'un a déjà fait ce genre de chose ça serait bien car la je craque

    Merci!!

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Mais je me demande si php ne bloque pas les accès sur d'autres machines
    Oui et non.
    S'il y avait un problème de droit, l'erreur retournée aurait été du genre : ... access denied ... (accès refusé)
    Enfin, théoriquement.

    Malgré tout, il y a peut être un problème de droit, mais (peut être toujours) sur le fichier temporaire.


    Ceci dit, pour savoir si Php te permet d'accéder sur ton autre disque (le P:/), et bien fais un fopen() par exemple pour créer un fichier. (un essai quoi)
    Tu sauras 2 choses : La syntaxe, et les droits d'accès.


    Si tu peux atteindre ce disque, alors ça peu confirmer que c'est ce fichier temporaire qui cause problème.
    Du coup, une solution serait de récupérer le flux du fichier temporaire (un fread() par exemple) et on crée soit même le fichier (fopen) sur le disque avec le contenu du fichier.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 43
    Points
    43
    Par défaut
    Même problème avec fopen, il ne trouve pas le fichier car je ne connais pas la syntaxe pour indiquer un autre serveur. Ne fonctionne pas non plus avec le lecteur réseau.

  10. #10
    Membre habitué
    Profil pro
    DevOps
    Inscrit en
    Décembre 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : DevOps

    Informations forums :
    Inscription : Décembre 2008
    Messages : 254
    Points : 144
    Points
    144
    Par défaut
    Je pense que la fonction move_uploaded_file ne fonctionne pas avec des serveur Distant.
    Tu peu uploader le fichier seulement vers le serveur web.
    (Pas sur a 100% de cela mais moi je n'ai jamais réussi)

    Une solution alternative je pense serai de faire un montage sur ton serveur Web de ton dossier de destination de ton NAS, comme cela tu aura un chemin local pour utiliser la commande move_uploaded_file.

Discussions similaires

  1. Copie d'un fichier local vers un serveur distant
    Par Contact2012 dans le forum VBScript
    Réponses: 4
    Dernier message: 20/07/2010, 14h38
  2. page html locale vers serveur distant
    Par milimelo dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 09/06/2008, 09h15
  3. Transfert de photo vers un serveur distant
    Par paradeofphp dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/12/2007, 10h32
  4. Réponses: 3
    Dernier message: 06/12/2007, 17h35
  5. [Mysql] transfert données ajoutées vers serveur distant
    Par hanane28 dans le forum Administration
    Réponses: 3
    Dernier message: 20/11/2005, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo