ftp_put erreur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ftp_put erreur

Re: ftp_put erreur

par Ryle » 30 mai 2010, 16:05

Dans ce cas tu peux oublier l'option FTP :)

Grosso modo, quand tu fais un "put" via FTP, cela signifie que :
- tu as un client FTP sur ta machine
- tu es connecté à un serveur FTP
- tu va envoyer un fichier depuis ton ordinateur vers le serveur auquel tu t'es connecté

Lorsque PHP fait un "put" via FTP, cela signifie :
- qu'il est un client FTP
- qu'il est connecté à un serveur FTP
- qu'il va envoyer un fichier depuis la machine où il est installé, vers le serveur auquel il s'est connecté

Pour faire simple, en php, le FTP va te servir à faire des transfert de fichiers entre serveurs, mais pas entre un client et un serveur. Pour cela il te faut utiliser le protocole HTTP, en utilisant un formulaire html et des champs de type file. PHP pourra alors récupérer le fichier que tu envois depuis ton poste vers le serveur à l'aide de la fonction move_uploaded_file()

Il y a un topic récent dans la FAQ qui donne quelques tuyaux pour faire de l'upload de fichier :)

Re: ftp_put erreur

par patrice06 » 30 mai 2010, 10:50

bonjour, mon but est d'uploader un fichier local (à l'aide du formulaire) vers un serveur tout en le renomment.

Re: ftp_put erreur

par Ryle » 30 mai 2010, 10:37

Qu'est ce que tu veux faire au juste ? Envoyer un fichier de ton serveur où tourne php vers un autre serveur ftp (copie de serveur à serveur), ou bien envoyer un fichier depuis le poste client vers ton serveur où tourne php (auquel cas le protocol ftp n'est pas approprié).

Dans ce que tu nous montres comme code, php doit aller chercher le fichier "superimage.jpg" qui se trouve sur le disque c:/ du serveur (donc la machine où tourne php, qui semble donc être du windows). Il se connecte ensuite à un autre serveur par ftp pour y copier ce fichier à l'emplacement indiqué (sur un serveur unix ou linux)

D'où ma question : qu'est ce que tu veux faire exactement ? :)

Re: ftp_put erreur

par patrice06 » 30 mai 2010, 10:16

bonjour, j'ai toujour pas résolu mon pb,
j'ai testé ce code sur un autre serveur pouravancer mais toujour pareil:

Code : Tout sélectionner

<form method="POST" action="image_upload2.php" enctype="multipart/form-data"> <!-- On limite le fichier à 100Ko --> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> Fichier : <input type="file" name="photo"> <input type="submit" name="envoyer" value="Envoyer le fichier"> </form> <?php $ftp_server='xxxxxxxxxxxxxxxxxxxxxx'; $ftp_user_name='xxxxxxxxxxx'; $ftp_user_pass=xxxxxxxxxxxx'; $stock = "/home/xxxxxxxxxxx/public_html/photo/"; $nomphoto = '99999'; if(isset($_FILES['photo'])) { $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); ftp_pasv($conn_id, true); if ((!$conn_id) || (!$login_result)) { echo "<br>La connexion FTP a échoué !"; exit(); } else { echo "<br>Connexion effectuée..."; } ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 5000); $photo = $_FILES['photo']['name']; $nbre = strlen($photo) - 4; $ext = strtolower(substr($photo, $nbre, 4)); $source_file = $_FILES['photo']['tmp_name']; $destination_file = $stock.$nomphoto.$ext; echo "<br>Chargement de $source_file vers $ftp_server en tant que $destination_file..."; $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); if (!$upload) { echo "<br>Le chargement FTP a échoué!"; } else { echo "<br>Le chargement FTP a réussi!"; } ftp_close($conn_id); } ?>
résultat:
Connexion effectuée...
Chargement de /tmp/phpNNmG1n vers http://www.xxxxx.com en tant que /home/xxxxx/public_html/photo/99999.jpg...
Warning: ftp_put() [function.ftp-put]: Can't open that file: No such file or directory in /home/xxxx/public_html/monscript.php on line 50

Le chargement FTP a échoué!
:( :(

Re: ftp_put erreur

par paatrice06 » 28 mai 2010, 12:04

merci pour l'aide, j'ai testé mais j'ai l'erreur suivante:
PHP Warning: ftp_put(c:/superimage.jpg) [<a href='function.ftp-put'>function.ftp-put</a>]: failed to open stream: No such file or directory in...
et me renvoi à la ligne du ftp_put

Re: ftp_put erreur

par visualight » 28 mai 2010, 11:42

Salut,

Essaye un peu :
<?php
      $ftp_server='xxxxxxx';
      $ftp_user_name='xxxxxxxxx';
      $ftp_user_pass='monpass';

      $conn_id = ftp_connect($ftp_server);
      $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
      ftp_pasv($conn_id, true);

      ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 50000);
      ftp_chdir($conn_id, '/home/monsite/public_html/images/nt/');
      ftp_put($conn_id, '333.jpg', 'c:/superimage.jpg', FTP_BINARY);

      ftp_close($conn_id);
?>
OU
<?php
      $ftp_server='xxxxxxx';
      $ftp_user_name='xxxxxxxxx';
      $ftp_user_pass='monpass';

      $conn_id = ftp_connect($ftp_server);
      $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
      ftp_pasv($conn_id, true);

      ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 50000);
      ftp_chdir($conn_id, '/public_html/images/nt/');
      ftp_put($conn_id, '333.jpg', 'c:/superimage.jpg', FTP_BINARY);

      ftp_close($conn_id);
?>
En effet, il se peut que vu que tu te connectes en FTP ton site, tu est déjà dans le répertoire public_html donc il se peux que tu ne sois pas obligé de taper tout le chemin relatif.

Tiens nous au jus ;)

ftp_put erreur

par patrice06 » 28 mai 2010, 11:12

bonjour, j'essaye d'uploader une image sur mon serveur à partie d'un formulaire mais j'ai une erreur ftp_put "No such file or directory in"
j'ai donc essayé de reduire mon script au strict minimum pour résoudre mon pb mais ça donne rien...
je précise que j'ai testé tout ce qui se trouve avant ftp_put il n'y a pas d'erreur connection, login, ect), le dossier de destination est bien dispo en écriture...

Code : Tout sélectionner

<?php $ftp_server='xxxxxxx'; $ftp_user_name='xxxxxxxxx'; $ftp_user_pass='monpass'; $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); ftp_pasv($conn_id, true); ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 50000); ftp_put($conn_id, "/home/monsite/public_html/images/nt/333.jpg", "c:/superimage.jpg", FTP_BINARY); ftp_close($conn_id); ?>
merci pour l'aide :(