[PHP] ftp_put et php, mission impossible ?

ftp_put et php, mission impossible ? [PHP] - PHP - Programmation

Marsh Posté le 26-08-2003 à 17:32:35    

voilà, ca commence a faire pas mal de tempps que je lutte, que je cherche, et je trouve rien ..
La fonction ftp_put marche t'elle vraiment  lorsque l'on souhaite uploader un fichier local sur un serveur FTP ?
j'ai essayé moultes facon différentes, j'arrive a rien.. et sur la plupart des forum, cette meme question revient souvent, mais sans réponses ..
 
toujours la meme  erreur : Warning: ftp_put(): error opening logo2.gif in /var/www/html/korny/sendimage.php on line 35
 
 
une lumiere, une idée ? ?

Reply

Marsh Posté le 26-08-2003 à 17:32:35   

Reply

Marsh Posté le 26-08-2003 à 17:55:06    

code ?
t'as un formulaire d'upload ?  [:troa]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 26-08-2003 à 18:04:40    

j'ai un formulaire, puis le code apres pour uploader  
 
 
mon formulaire :
 

Code :
  1. <html>
  2. <body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">
  3. <form name="Attachments"  method=POST action="sendimage.php" enctype="multipart/form-data">
  4. <input type="hidden" name="MAX_FILE_SIZE" value="1000">
  5. Send this file: <input name="userfile" type="file">
  6. <input type="submit" value="Send File">
  7. </form>
  8. </body>
  9. </html


 
 
 
 
 
 
le sendimage.php :
 
 

Code :
  1. <?php
  2.      
  3.     $ftp_server='toto.no-ip.org';//serverip
  4.     $conn_id = ftp_connect($ftp_server);
  5.  
  6.    
  7.     $user="xxx";
  8.     $passwd="xxx";
  9.     $login_result = ftp_login($conn_id, $user, $passwd);
  10. // Test connection ftp
  11.    if ((!$conn_id) || (!$login_result)) {
  12.         echo "FTP connection has failed!";
  13.         echo "Attempted to connect to $ftp_server for user $ftp_user_name";
  14.         die;
  15.     } else {
  16.         echo "<br>Connected to $ftp_server, for user $user<br>";
  17.     }
  18. ftp_chdir($conn_id, "images" );
  19. // récupération du fichier à uploader
  20. $files=$_FILES['userfile']['name'];
  21. //fichier de destination
  22. $destination_file="x.jpg";
  23. //upload
  24. $upload = ftp_put($conn_id,$destination_file, $files, FTP_BINARY);
  25. // test du bon déroulement de l'upload
  26. if (!$upload) {
  27.         echo "FTP upload has failed!";
  28.     } else {
  29.         echo "Uploaded $user_file to $ftp_server as $destination_file";
  30.     }
  31. // close ftp
  32. ftp_close($conn_id);
  33. ?>


 
 
rem :
 
j'ai un petit doute du fonctionement de la récupération du fichier source. Sur certains tutoriaux, j'ai vu juste $user_file. Mais moi ca ne marche pas : il faut que je passe par un $files=$_FILES['userfile']['name'];
 

Reply

Marsh Posté le 26-08-2003 à 18:06:44    

dans les logs de mon serveur ftp, je vois bien une tentative de connection de mon pc client, qui essaye d'uploader  
 
je le vois ariver : connection ok
je le vois passer dans le repertoire images : ok
 
et apres, paf, conection closed

Reply

Marsh Posté le 26-08-2003 à 18:13:25    

ton serveur FTP c'est apache ?
 
essaie en faisant pointer le fichier de destination dans /tmp/


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 26-08-2003 à 18:33:30    

au fait .. il t'affiche quoi $files ???


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 26-08-2003 à 18:36:46    

c'est un apache, oui
et le php, c PHP 4.2.2  
 
 
 
si je fais pointer dans /tmp/, c'est pareil. De toute facon j'ai bien vérifié les droits de /images/ c'est good :)
 
 
sinon, si j'affiche $files tout connement .... j'ai rien [:proy]

Reply

Marsh Posté le 26-08-2003 à 18:39:27    

korny a écrit :


 
sinon, si j'affiche $files tout connement .... j'ai rien [:proy]
 


ben c'est p'tet  ca le problème  [:spamafote]  
s'il na pas de source ....:/


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 26-08-2003 à 19:43:01    

quand $files est vide, le message d'erreur est  

Warning: ftp_put(): error opening in /var/www/html/korny/sendimage.php on line 35  

 
Si j'ai un $file=logo2.gif, à mon avis, on va retrouver le message d'erreur initial , cad :  

Warning: ftp_put(): error opening logo2.gif in /var/www/html/korny/sendimage.php on line 35

 
 
donc.. je sais pas si le probleme vient réellement de là .. !

Reply

Marsh Posté le 26-08-2003 à 19:59:59    

:whistle: ......remplaces  

Code :
  1. $files=$_FILES['userfile']['name'];


 
par  
 

Code :
  1. $files=$_FILES['userfile']['tmp_name'];


 
 
 :hello:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 26-08-2003 à 19:59:59   

Reply

Marsh Posté le 26-08-2003 à 20:13:57    

ah .. pas bete, ca serait peut etre une histoire de chemin..
sauf que  
 
$files=$_FILES['userfile']['name'];  
 
j'ai logo2.gif
 
 
$files=$_FILES['userfile']['tmp_name'];
 
j'ai rien !!!
alors que si j'ai bien compris, il me faudrait le chemin complet ...

Reply

Marsh Posté le 26-08-2003 à 20:36:59    

j'ai testé ton script chez moi en local ... avec le nom temporaire ca fonctionne tres bien ... ct ca la merde  [:spamafote]
 
edit : ah oui, $_FILES['userfile']['tmp_name'] est le nom temporaire du fichier  ;)


Message édité par simogeo le 26-08-2003 à 20:38:27

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 26-08-2003 à 21:27:05    

bah merde ! j'ai  pas de chance !! ca passe pas ...
 
en passant tmp_name
 
si je fais un echo du $files  j'ai rien ..
par contre, si je remet "name" au lieu de tmp_name, je retrouve mon logo2.gif ..
 
je comprends plus !!
 
le nom temporaire du fichier, il doit bien s'afficher si je lui demande avec echo "$files"; non ?
 

Reply

Marsh Posté le 27-08-2003 à 09:06:08    

up !

Reply

Marsh Posté le 27-08-2003 à 09:22:45    

t'es sur de pas avoir fait d'ereur ?  :o (parce que c'est quand meme etonnant que ca marche chez moi et pas chez toi   :sarcastic:  )
ou alors pb de config ... [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 27-08-2003 à 09:43:25    

j'en suis sur, oui :/
 
si je fais un echo de $files    
 
($files=$_FILES['userfile']['tmp_name']; )
 
 
j'ai rien ..
et toi, il t'affiche qquchse ?

Reply

Marsh Posté le 27-08-2003 à 13:30:34    

:bounce:

Reply

Marsh Posté le 27-08-2003 à 14:54:22    

korny a écrit :

j'en suis sur, oui :/
 
si je fais un echo de $files    
 
($files=$_FILES['userfile']['tmp_name']; )
 
 
j'ai rien ..
et toi, il t'affiche qquchse ?


biensur .. le nom temporaire  [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 27-08-2003 à 14:57:33    

bon ... je c pas d'ou ca bien alors
j'ai vraiment pas de chance :cry:

Reply

Marsh Posté le 28-08-2003 à 10:07:23    

allez, encore un up rempli de desespoir  :cry:

Reply

Marsh Posté le 28-08-2003 à 15:42:26    

tas un probleme avec ton upload http. (entre ton pc et le serveur).
 
Quel est la taille de ton image car :
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
 
ca fait pas bcp ... meme pas un ko ?

Reply

Marsh Posté le 28-08-2003 à 16:43:32    

:):) ... :/ :/  .. :(:(
 
 
:):) -> car y'avait bien le coup du value=1000 !
:/:/ -> ca a pas marché longtemps
:(:( -> Les fichiers images qui arrivent sont tronqués !!
         Le JPG est dégueulasse, le haut est correct, et apres ca part en live, on reconnait pas l'image
 
 
et ce probleme, je l'ai avec l'upload classique par php ..
je suppose donc qu'un ftp_put fonctionne comme ca :
 
1/upload classique du fichier en php
2/ftp sur le host souhaité, et UL du fichié uploadé en 1/
 
 
donc .. ca doit etre mon upload en php qui merde alors ..
Je suis donc encore plus dans la merde, car le résultat est dégueu, l'image est ok au début, et entre les 2 y'a que l"upload en php .. Il est ou ce probleme !!?? l'upload ?

Reply

Marsh Posté le 28-08-2003 à 17:18:29    

Citation :


et ce probleme, je l'ai avec l'upload classique par php ..  
je suppose donc qu'un ftp_put fonctionne comme ca :  
 
1/upload classique du fichier en php  
2/ftp sur le host souhaité, et UL du fichié uploadé en 1/  


 
non, FTP_PUT recopie le fichier du serveur ou sont les scripts PHP vers le serveur FTP ou tu ouvert une connection.
 
Mais tu as raison c surement lupload du fichier qui fonctionne mal.
Cet upload na rien a voir avec PHP, c de HTTP, php nest la que pr traiter le fichier une fois arrivé.
 
1 / si tu peux, regarder le fichier ds le repertoire temporaire pr voir si il est tronqué.  
===> chemin du fichier : $_FILES['userfile']['tmp_name'];  
 
2/ si tu peux pas, un copy ou move_uploaded_file mais cest un peu ce que tu fais dans ton autre topic et donc ... ca deviendrait un probleme de config serveur ?
 

Reply

Marsh Posté le 01-09-2003 à 14:56:02    

je n'arrive pas a visualiser le fichier tmp ... :(
 
ce que je comprends pas, c'est que j'arrive, à transferer un fichier GIF de 12 Ko  
par contre, le GIF de 150 Ko, il transfert, mais devient tout dégueulasse arrivé à destination ...
ca m'énerve !!
 
:bounce:

Reply

Marsh Posté le 01-09-2003 à 15:36:20    

je confirme que ca ne vient pas du ftp
j'ai tenté de faire le ftp_put sur mon ftp de chez wanadoo.
et des qu'il arrive labas, le fichier est déjà tronqué.
 
c'est bien la copie temporaire sur mon serveur qui pose problem.
un probleme de conf apache ? j'en sais rien ..


Message édité par korny le 01-09-2003 à 15:37:01
Reply

Marsh Posté le 02-09-2003 à 14:11:10    

:bounce:

Reply

Marsh Posté le 02-09-2003 à 14:23:57    

beleg a écrit :

tas un probleme avec ton upload http. (entre ton pc et le serveur).
 
Quel est la taille de ton image car :
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
 
ca fait pas bcp ... meme pas un ko ?

T'as modifié ça ??

Reply

Marsh Posté le 02-09-2003 à 14:33:24    

oui :)
et l'upload fonctionne
cependant, le fichier qui arrive sur le serveur est dead.
je parlais de l'image tronquée .. mais j'ai testé avec un fichier rar , par exemple, et là, pareil, le fichier qui arrive n'est plus lisible :(

Reply

Marsh Posté le 02-09-2003 à 14:36:33    

T'as une idée plus ou moins précise de la perte (en pourcentage ou en fixe par rapport à la taille d'origine) ?

Reply

Marsh Posté le 02-09-2003 à 14:38:37    

je regarde ..

Reply

Marsh Posté le 02-09-2003 à 14:45:27    

je viens de tester d'uploader 2 images : un gif et un jpg :
 
(résultat du jpg, si ca peut te servir :  
 
http://nascar-cup.no-ip.org/korny/gta.jpeg
 
 
, coté taille, peut etre une piste : le fichier uploadé fait 2x la taille du fichier d'origine !
le fichier faisait 54k environ .. et là, il en fait 110ko sur le serveur apres upload ..

Reply

Marsh Posté le 02-09-2003 à 14:49:02    

:ouch: là par contre j'y pompe plus rien...
le fichier de base fait donc un peu plus de 50ko et arrive sur le serveur deux fois plus gros... j'aurais pensé à l'inverse quand tu parlais "d'image tronquée" :pt1cable:  
Peut être une gestion foireuse de l'upload par le ftp...
Re-balance ton code avec les modifs apportées

Reply

Marsh Posté le 02-09-2003 à 14:51:25    

RiderCrazy a écrit :

:ouch: là par contre j'y pompe plus rien...  
le fichier de base fait donc un peu plus de 50ko et arrive sur le serveur deux fois plus gros... j'aurais pensé à l'inverse quand tu parlais "d'image tronquée" :pt1cable:  
Peut être une gestion foireuse de l'upload par le ftp...
Re-balance ton code avec les modifs apportées


 
merde !!!
j'étais sur que tu allais m'apporté la solution, quand tu m'a parlé de taille :d .. chier !  
je met le code dans 1 min :)

Reply

Marsh Posté le 02-09-2003 à 14:57:55    

le formulaire :  
 

Code :
  1. <html>
  2. <body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">
  3. <form name="Attachments"  method=POST action="sendimage.php" enctype="multipart/form-data">
  4. <input type="hidden" name="MAX_FILE_SIZE" value="100000000000000">
  5. Send this file: <input name="userfile" type="file">
  6. <input type="submit" value="Send File">
  7. </form>
  8. </body>
  9. </html


 
 
 
 
 
et le php upload/ftp :
 
 

Code :
  1. <?php
  2.     $ftp_server='nascar-cup.no-ip.org';//serverip
  3.     $conn_id = ftp_connect($ftp_server);
  4.     $user="xxxx";
  5.     $passwd="xxxx";
  6.     $login_result = ftp_login($conn_id, $user, $passwd);
  7. // Test connection ftp
  8.    if ((!$conn_id) || (!$login_result)) {
  9.         echo "FTP connection has failed!";
  10.         echo "Attempted to connect to $ftp_server for user $ftp_user_name";
  11.         die;
  12.     } else {
  13.         echo "<br>Connected to $ftp_server, for user $user<br>";
  14.     }
  15. //ftp_chdir($conn_id, "images" );
  16. // répétion du fichier à ploader
  17. $files=$_FILES['userfile']['tmp_name'];
  18. $files2=$_FILES['userfile']['name'];
  19. $destination_file=$files2;
  20. echo "$files";
  21. echo $userfile_name;
  22. //upload
  23. $upload = ftp_put($conn_id,$destination_file, $files, FTP_BINARY);
  24. //$upload = ftp_put($conn_id,$destination_file, $files, ASCII);
  25. // test du bon déulement de l'upload
  26. if (!$upload) {
  27.         echo "FTP upload has failed!";
  28.     } else {
  29.         echo "Uploaded $user_file to $ftp_server as $destination_file";
  30.     }


Message édité par korny le 02-09-2003 à 14:58:14
Reply

Marsh Posté le 02-09-2003 à 15:10:27    

Essayes de voir ça:
http://dev.nexen.net/scripts/details.php?scripts=557
Et puis ça:
http://dev.nexen.net/scripts/details.php?scripts=622
 
Le premier utilise ftp_put mais avec une connection un peu plus complète sur le ftp que ton script. A voir si ça viendrait pas de la justement.
Le deuxième n'utilise pas ftp_put mais copy... C'est un peu le bordel dans ce script car le type ne l'a pas nettoyé et y'a toutes ses balises html mais on repère facilement. Solution alternative quoi...

Reply

Marsh Posté le 02-09-2003 à 15:19:37    

faudrait peut être reprendre depuis le début
 
pour l'instant on oublie le ftp et on se concentre sur l'upload (qui est la cause de tout je pense)
 
ça donne quoi quand tu copie le fichier temporaire sur ton site (en php, histoire de le virer de /tmp ou \temp)
 
essayes un ptit, move_uploaded_file()
 
ajoute des infos pendant l'upload (taille du fichier, nom temporaire, nom final etc)
 
après ça ira mieux déjà


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 02-09-2003 à 15:21:39    

merci pour votre aide en tout cas !!!
 
 
bon, je me lance dans vos 2 idées :)
et comme je suis tres débutant en php, ca va prendre un peu de temps !
:hello:

Reply

Marsh Posté le 02-09-2003 à 15:28:20    

ok alors fait déjà ça :
 
tu prend ton formulaire et tu changes action="...." par action="<?=_SERVER['PHP_SELF'] ?>" tu vires aussi le champ max_file_size pour le moment
 
en haut dans le fichier tu ajoutes :

Code :
  1. <?
  2. if ($_POST) {
  3.   print_r($_FILES);
  4.   print_r($_POST);
  5. }
  6. ?>


 
et tu colles ici ce que ça affiche en plus une fois le formulaire validé


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 02-09-2003 à 15:38:30    

Sh@rdar a écrit :

ok alors fait déjà ça :
 
tu prend ton formulaire et tu changes action="...." par action="<?=_SERVER['PHP_SELF'] ?>" tu vires aussi le champ max_file_size pour le moment
 
en haut dans le fichier tu ajoutes :

Code :
  1. <?
  2. if ($_POST) {
  3.   print_r($_FILES);
  4.   print_r($_POST);
  5. }
  6. ?>


 
et tu colles ici ce que ça affiche en plus une fois le formulaire validé


 
bon, pour l'instant avec ca dans mon formulaire,  

Code :
  1. <form name="Attachments"  method=POST action="<?=_SERVER['PHP_SELF']?>" enctype="multipart/form-data">


 
 
j'ai ca :  

Code :
  1. Parse error: parse error, unexpected '[', expecting ',' or ';' in /var/www/html/korny2/index.php on line 10


 
une erreur dans mes '[' ',' je suppose, bref, je fais ca et je colle le resultat ..
 
mais je suppose que si je met "php_self", on ne refere plus à mon fichier sendimage.php .. donc tout le contenu de mon ancien sendimage, je dois le coller dans le meme script ou y'a le formulaire ?

Reply

Marsh Posté le 02-09-2003 à 15:49:47    

fait comme je t'ai dit mais ajoute un $ avant _SERVER (faute de frappe)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed