Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1277 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Erreur PHP/FTP - Warning: ftp_fget()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur PHP/FTP - Warning: ftp_fget()

n°1525460
lespagnol9​393
Technology addict !
Posté le 07-03-2007 à 18:03:54  profilanswer
 

Bonjour à tous !
 
 :hello:  
 
Je suis sur le point de finaliser un petit script mais une erreur persiste...

Citation :

Warning: ftp_fget() expects parameter 2 to be resource, string given in c:\program files\easyphp1-8\www\telecharger.php on line 27


 
Voici mon script:

Citation :

1   <?
2    
3   $ftp_server="localhost";
4   $ftp_user_name=$_POST['userftp'] ;
5   $ftp_user_pass=$_POST['pwdftp'] ;
6   $source_dir='\\dir_ftp\\' ;
7   $source_file=$_POST['ftpsource'] ;
8  
9   $destination_file='k:\\test\\' ;
10
11  // Création de la connexion
12  
13  $conn_id = ftp_connect("$ftp_server" );
14
15  // Authentification avec nom de compte et mot de passe
16  $login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass" );
17
18  // Vérification de la connexion
19  if ((!$conn_id) || (!$login_result)) {
20        echo "Tentative de connexion au serveur $ftp_server avec $ftp_user_name a échoué !";
21        die;
22    } else {
23       echo "$ftp_user_name, tu es connecté au serveur $ftp_server";
24    }
25
26  // Téléchargement d\'un fichier.
27  ftp_fget($conn_id, "$destination_file", "$source_file", FTP_BINARY) ;
28
29  // Fermeture de la connexion FTP.
30  ftp_quit($conn_id);
31
32  ?>


 
Le script m'indique que la connexion se déroule bien, mais que ça bloque au niveau du transfert.
Si qqun a une petite idée pour m'aider, il sera bien évidement le bienvenu :) Merci !


Message édité par lespagnol9393 le 07-03-2007 à 18:07:47

---------------
Mon FeedBack
mood
Publicité
Posté le 07-03-2007 à 18:03:54  profilanswer
 

n°1525465
FlorentG
Unité de Masse
Posté le 07-03-2007 à 18:09:45  profilanswer
 

L'idée est de lire le manuel : http://fr3.php.net/ftp_fget ... Le deuxième paramètre de ftp_fget est un handle sur un fichier (obtenu après un fopen).
 
Aussi, évite les "$destination_file", pourquoi mettre les "" autour de la variable ?

n°1525468
lespagnol9​393
Technology addict !
Posté le 07-03-2007 à 18:12:50  profilanswer
 

Heuuu... Je vais tester tout ça...
Pour les "", c'était un exemple du web... Je vais modifier et tester de suite.
 
Merci de ton aide ;)


---------------
Mon FeedBack
n°1525478
lespagnol9​393
Technology addict !
Posté le 07-03-2007 à 18:20:02  profilanswer
 

Citation :

<?
$ftp_server="localhost";
$ftp_user_name=$_POST['userftp'] ;
$ftp_user_pass=$_POST['pwdftp'] ;
$source_dir='\\Mon.Repertoire\\' ;
$source_file=$_POST['ftpsource'] ;
$source=$source_dir.$source_file ;
$destination_file='k:\\test\\' ;
$destination = fopen('$destination_file', 'w');
 
// Création de la connexion
$conn_id = ftp_connect("$ftp_server" );
 
// Authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass" );
 
// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) {
        echo "Tentative de connexion au serveur $ftp_server avec $ftp_user_name a échoué !";
        die;
    } else {
        echo "$ftp_user_name, tu es connecté au serveur $ftp_server";
    }
 
// Téléchargement d\'un fichier.
//Ligne 31:
ftp_fget($conn_id, $destination, $source, FTP_BINARY) ;
 
// Fermeture de la connexion FTP.
ftp_quit($conn_id);
 
?>


 

Citation :

Warning: ftp_fget(): Cannot RETR. Cannot open file "F:\Mon.Repertoire\dir_ou_se_trouve_les_fichier_que_je_veux_telecharger". Accès refusé in c:\program files\easyphp1-8\www\telecharger.php on line 31


 
:/


Message édité par lespagnol9393 le 07-03-2007 à 18:22:56

---------------
Mon FeedBack
n°1525484
FlorentG
Unité de Masse
Posté le 07-03-2007 à 18:24:08  profilanswer
 

$destination_file doit être un fichier, et pas un dossier

n°1525485
lespagnol9​393
Technology addict !
Posté le 07-03-2007 à 18:24:54  profilanswer
 

Erf...
C'est un repertoire composé de plusieurs *.rar que je voudrai télécharger...
Aurais-tu une idée dans ce cas ?


Message édité par lespagnol9393 le 07-03-2007 à 18:25:12

---------------
Mon FeedBack
n°1525487
FlorentG
Unité de Masse
Posté le 07-03-2007 à 18:27:04  profilanswer
 

Je vois pas la différence, quand tu télécharges un fichier à partir d'un FTP, il faut bien lui donner le fichier destination...

n°1525489
lespagnol9​393
Technology addict !
Posté le 07-03-2007 à 18:28:07  profilanswer
 

ça dépends... Il est tout à fait possible, manuellement, de lancer une repertoire en download, je me trompe ?


---------------
Mon FeedBack
n°1525492
lespagnol9​393
Technology addict !
Posté le 07-03-2007 à 18:31:38  profilanswer
 

http://www.asp-php.net/ressources/ [...] aspx?id=84
 
Mais je dois dire que me connaissance sont encore assez limitées :D
Cela est donc faisable, Florent, non ?


---------------
Mon FeedBack
n°1525497
FlorentG
Unité de Masse
Posté le 07-03-2007 à 18:40:57  profilanswer
 

Non c'est pas faisable directement, parce que le protocole FTP ne permet que de télécharger un fichier, pas un dossier entier. Il faut d'abord récupérer la listes des fichiers, puis lancer le download un à un :(

mood
Publicité
Posté le 07-03-2007 à 18:40:57  profilanswer
 

n°1525649
lespagnol9​393
Technology addict !
Posté le 08-03-2007 à 08:47:50  profilanswer
 

Hello :)
 
Je met de coté pour le moment le fait de vouloir télécharger tout un dossier distant, le temps de faire qques test.
Je liste donc le contenu d'un dossier, dans un fichier.
 
Je tente de télécharger ce fichier, une fois rempli avec la liste des fichiers de mon dossier, et là, erreur !

Citation :

Warning: ftp_fget(): Cannot RETR. Access violation at address 00492E54 in module 'ftpserv.exe'. Read of address 00000000 in c:\program files\easyphp1-8\www\mon_site\telecharger.php on line 49


 
Voici mon script:

Citation :

01  <?
02
03  $ftp_server="localhost";
04  $ftp_user_name=$_POST['userftp'] ;
05  $ftp_user_pass=$_POST['pwdftp'] ;
06  $source_dir='F:\\Mon_Repertoire\\' ;
07  $source_file=$_POST['ftpsource'].'\\' ;
08  $source=$source_dir.$source_file ;
09  $destination_file='c:\\test\\' ;
10  //echo $source ;
11 $destination = fopen('$destination_file', 'w');
12
13  // Création de la connexion
14  $conn_id = ftp_connect("$ftp_server" );
15
16  // Authentification avec nom de compte et mot de passe
17  $login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass" );
18
19 // Vérification de la connexion
20  if ((!$conn_id) || (!$login_result))
21   {
22       echo '<br><br><br><br><center><img src="attention.gif"></center><br>';
23       echo '<b><font color="red"><center>Tentative de connexion au serveur<u> '. $ftp_server .'</u> avec <u></u> a échoué !<br>(Nom d\'utilisateur <u>'. $ftp_user_name .'</u> incorrect)</center></b><BR><BR>';
24     echo '<!-- DEBUT DU SCRIPT BOUTON ET URL -->' ;
25     echo '<center><FORM>' ;
26     echo '<INPUT TYPE="button" VALUE=" Retour " onClick="document.location.href=\'premierepage.html\'">' ;
27     echo '</FORM></center>' ;
28     echo '<!-- FIN DU SCRIPT BOUTON ET URL -->';
29     die ;
30  } else
31     {
32      echo '<center><font color="red"><u>'. $ftp_user_name .'</u>, tu es connecté au serveur <u>'. $ftp_server .'</u></font></center>';
33  }
34
35       //On liste tous les fichiers présents dans /$source/
36       $file_image = "$source\\liste_rar.txt" ;
37       $fichier = fopen($file_image,"w+" ) ;
38       if ($handle = opendir($source))
39     {
40           while (false !== ($file_image = readdir($handle)))
41             {
42                       fwrite( $fichier,$file_image."<br>" );
43                       echo $fichier,$file_image."<br>" ;
44              }
45      }
46       fclose($fichier);
47
48  // Téléchargement d\'un fichier.
49  ftp_fget($conn_id, $destination, $file_image, FTP_BINARY) ;
50
51  // Fermeture de la connexion FTP.
52  ftp_quit($conn_id);
53
54  ?>


 
Merci pour votre aide, toujours précieuse :)


Message édité par lespagnol9393 le 08-03-2007 à 08:54:40

---------------
Mon FeedBack
n°1525670
FlorentG
Unité de Masse
Posté le 08-03-2007 à 09:28:34  profilanswer
 

T'as toujours la même erreur :( Il faut spécifier un fichier de destination, et pas un dossier. Tu fais un fopen d'un dossier, ce qui évidemment va tout faire exploser.
 
Pour chaque fichier à télécharger du ftp, il faut créer manuellement un fichier sur ton disque, et faire un fopen dessus. Utilise la fonction touch() pour créer le fichier, fait un fopen dessus, fait ton fgets, télécharge, fais un fclose. Répète l'opération pour chaque fichier du dossier ftp

n°1525671
lespagnol9​393
Technology addict !
Posté le 08-03-2007 à 09:32:57  profilanswer
 

Mais si je ne connais pas à l'avance le nom des fichiers ? :/
 
PS: Si tu regardes bien, ce n'est pas tout à fait la meme erreur que la précédente...

Message cité 1 fois
Message édité par lespagnol9393 le 08-03-2007 à 09:33:40

---------------
Mon FeedBack
n°1525777
lespagnol9​393
Technology addict !
Posté le 08-03-2007 à 13:12:56  profilanswer
 

Je vais finalement laisser tomber l'idée de télécharger par ftp un dossier, et par la même occasion un fichier... Trop compliqué... :/


---------------
Mon FeedBack
n°1525877
FlorentG
Unité de Masse
Posté le 08-03-2007 à 15:40:56  profilanswer
 

lespagnol9393 a écrit :

Mais si je ne connais pas à l'avance le nom des fichiers ? :/


ARGHHHHHH :D

 


Je vais devenir fou. La liste des fichier, tu peux la récupérer !

 

Avec :

Code :
  1. $listeFichier = ftp_nlist($conn_id, '-a .');


Tu peux changer de dossier aussi avec ftp_chdir()

 

Ensuite pour chaque élément de listefichier, tu fais un touch puis un fopen, et tu lance le download avec fgets. Y'a vraiment rien de compliqué :( N'hésite pas à lire complètement la documentation de l'extension ftp pour voir les possibilités.... Et si tu regardes un peu les commentaires dans le manuel, tu verra même ton problème tout fait ;)


Message édité par FlorentG le 08-03-2007 à 15:41:11
n°1526686
lespagnol9​393
Technology addict !
Posté le 10-03-2007 à 00:42:06  profilanswer
 

T'es un amour Florent... Je vais regarder tout ça avec attention ;)
Merci beaucoup


---------------
Mon FeedBack

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Erreur PHP/FTP - Warning: ftp_fget()

 

Sujets relatifs
Récupération d'n fichier par FTP[Résolu] Envoi d'un mail en PHP
[PHP][XML] Afficher xml dans page php[PHP] Redirection après formulaire
Résultat code PHP dans une variable --> include ?Erreur Compilation stray '\357'
[PHP/Flash] - Barre de progression[Javascript/PHP] Recadrer une photo
[Resolu] Coder le style en PHP (police, taille police)PHP/sql
Plus de sujets relatifs à : Erreur PHP/FTP - Warning: ftp_fget()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR