Page 1 sur 1

ftp_put erreur

Posté : 28 mai 2010, 11:12
par patrice06
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 :(

Re: ftp_put erreur

Posté : 28 mai 2010, 11:42
par visualight
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 ;)

Re: ftp_put erreur

Posté : 28 mai 2010, 12:04
par paatrice06
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

Posté : 30 mai 2010, 10:16
par patrice06
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

Posté : 30 mai 2010, 10:37
par Ryle
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

Posté : 30 mai 2010, 10:50
par patrice06
bonjour, mon but est d'uploader un fichier local (à l'aide du formulaire) vers un serveur tout en le renomment.

Re: ftp_put erreur

Posté : 30 mai 2010, 16:05
par Ryle
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 :)