Rechercher : dans
Par :

[PHP] Uploader sur un serveur FTP => problème

Dernière réponse le 29 mai 2009 à 13:45:18 Thom@s, le 18 mar 2004 à 13:37:19 
 Signaler ce message aux modérateurs

Salut à tous !

Je voudrais, en PHP, uploader automatiquement un fichier sur mon serveur FTP.
Voilà mon code :

$connect_id = ftp_connect('ftp.monserveur.com') or die ('Connexion FTP impossible !');

if (!@ftp_login($connect_id, 'login', 'password')) {
    echo 'Impossible de se logguer sur le serveur FTP !';
    }

if ($chemin) {
		if (!ftp_put($connect_id, "/html_docs/fichier.txt", "C:\mondossier\fichier.txt", FTP_ASCII)) {
			echo '<p class="rouge">!ERREUR! Les fichiers n\'ont pas pu être uploadés sur le serveur FTP !</p>';
		}
		else {
			echo '<p class="rouge">Les fichiers ont bien été uploadés sur le serveur FTP !</p>';
		}
		ftp_close($connect_id);
	}

Et voilà l'erreur qui est retournée par PHP :
Warning: ftp_put(): 3 is not a valid FTP Buffer resource in #### on line 55
Warning: ftp_close(): 3 is not a valid FTP Buffer resource in #### on line 61

Quelqu'un saurait-il où est mon erreur, svp, car là je ne sais plus quoi faire ! :-)

Merci beaucoup d'avance ! :)

A+ :)
  ___________________
  |__ .: Thom@s :. ___|

Meilleures réponses pour « [PHP] Uploader sur un serveur FTP => problème » dans :
Installer un serveur FTP sous Ubuntu Voir Sommaire: 1. Installer le serveur FTP 2. Configurer le serveur FTP 2.1 Interdire le FTP anonyme 2.2 Autoriser les utilisateurs locaux à se connecter 2.3 Autoriser les utilisateurs à uploader des fichiers 2.3 Choisir l'interface 3....
Installer un serveur FTP sous Windows VoirVersion rapide Version un peu moins rapide (mais plus propre) Version serveur propre Liens Pour aller plus loin : Accédez à votre serveur FTP n'importe où dans le monde Notes Version rapide VITE, JE VEUX INSTALLER UN SERVEUR FTP TOUT...
Se connecter à un serveur FTP en mode Ms-Dos VoirLa commande ftp permet de se connecter à un serveur FTP en ligne de commande. Certaines options de cette commande permettent d'automatiser la connexion en fournissant une liste de commandes contenues dans un fichier texte : ftp -i -s:cmd_ftp.txt...
Freebox et serveur web ou serveur FTP VoirVous souhaitez mettre en place un serveur web ou un serveur FTP (ou tout type de serveur) hébergé sur un ordinateur situé derrière une freebox. Cela est possible, mais plusieurs manipulations sont nécessaires : Configuration du pare-feu...

1

kalamit, le 18 mar 2004 à 14:18:49

Salut Thomas
Si tu me laisses un peu de temps, je vais regarder ca... :)

Kalamit,
Parle à ma culasse, mon carter est malade. :)

Répondre à kalamit

2

jisisv, le 18 mar 2004 à 14:28:53

Coommence par effectuer les échappements d'usage
"C:\\mondossier\\fichier.txt"

Johan
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.

Répondre à jisisv

3

kalamit, le 18 mar 2004 à 14:29:55

Tes fichiers se transferent ou pas ? Ton script est correct. Ca ressemble plus à un probleme de configuration du php.ini.

Peut etre que le serveur est en mode debugg. Dans ce cas, mets des @ avant la fonction ftp_put et ftp_close.

J'ai testé ton script et cela fonctionne (j'ai juste viré le if ($chemin) )

Kalamit,
Parle à ma culasse, mon carter est malade. :)

Répondre à kalamit

4

Thom@s, le 18 mar 2004 à 18:47:07

Salut à vous ! :-)

Merci de vous pencher sur mon problème ! :)

Pour Jisisv, j'ai fait comme tu as dit, merci :-)
Pour Kala, vala ce qui se passe :
J'ai fait comme tu as dit, j'ai mis des @ devant ftp_put et ftp_close et j'ai viré temporairement le if ($chemin) (mais avec le if le résultat est le même, de toute façon).
Et là, je n'ai plus l'erreur PHP (3 is not a valid FTP Buffer resource) mais par contre ftp_put() retourne FALSE et les fichiers ne se transfèrent pas...

Donc, je me suis posé quelques questions :
1) Le 1er paramètre de ftp_put est correct, non ?

2) Et le 2e paramètre est bien l'adresse du fichier distant ?
(par ex, est-ce que c'est correct ?:
"/home/html_docs/monlogin/dossier/fichier.txt")

3) Et le 3e paramètre est bien le fichier local ?
(par ex, est-ce que c'est correct ?:
"C:\\mondossier\\monfichier.txt")

4) Faut-il un \ d'échappement pour les / ?

5) Peut-on spécifier le mode (passif ou actif) ? (ou est-ce seulement pour les logiciels clients FTP ?)

6) Quels droits doit avoir le dossier distant dans lequel on transfère le fichier ? (fait-il impérativement un CHMOD 777 ?)

7) Pourquoi ça marche pas ? ;-)))

Merci beaucoup d'avance ! :)

  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

5

Thom@s, le 18 mar 2004 à 19:25:21

Resalut à tous !

Alors voilà:
J'ai mis maintenant directement

ftp_put($connect_id, "/html_docs/monlogin/fichier.txt", "C:\\mondossier\\fichier.txt", FTP_BINARY);

Et je me reçois une erreur PHP:
Warning: ftp_put(): Unable to access C:\mondossier\fichier.txt  in /html_docs/monlogin/monfichierphp.php on line 45

Quelqu'un aurait-il une idée, svp ? Parce que là je n'en peux plus ! J'ai tout essayé !... svp...

Merci beaucoup d'avance ! :)

A+ :)
  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

6

John NC, le 19 mar 2004 à 11:38:28

Salut !

Je voulais juste savoir, ca te sers à uploader un fichier d'un visiteur ? (par exemple, envoyer une image, un fichier divers pour le downloader comme pour des sites de script ou autre)
Sinon je connais pas assez PHP pour t'aider, désolé.
A+

Répondre à John NC

7

Thom@s, le 19 mar 2004 à 12:48:50

Salut John !

Ce script ne servisait qu'à moi, dans la partie "administration" de mon site. Elle servisait à uploader les logiciels que vais, j'espère, écrire, et autres fichiers :-)
Voila :-)

Sinon, est-ce quelqu'un aurait une idée pour mon problème, svp ?
Merci beaucoup d'avance ! :)

A+ :-)

  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

8

kalamit, le 19 mar 2004 à 13:04:35

Salut Thomas.

Je crois que tu n'as pas saisi exactement comment fonctionnait le ftp.
Tu ne peux pas uploader un fichier présent sur TON disque dur par cette methode. Avec cette bibliotheque de fonction le client FTP se trouve sur ton serveur web et non sur ta machine perso.

En fait, ce que tu fais, c'est un put d'un fichier présent sur ton serveur web sur un serveur FTP.

Kalamit,
Parle à ma culasse, mon carter est malade. :)

Répondre à kalamit

9

Thom@s, le 19 mar 2004 à 13:17:40

Salut Kala ! :-)

Merci pour ta réponse :-)
J'ai pas bien compris ce que tu as dit...

En fait, ce que j'essaie de faire, c'est d'uplaoder un fichier qui est sur MON disque dur sur le serveur Web de mon hébergeur.
Et je le fais par l'intermédiaire de cette page PHP que j'exécute en temps que visiteur :-)
(je n'ai pas de logiciel serveur Web chez moi...)

Et ce n'est pas possible ? N'est-ce pas à ça que sert la fonction FTP de PHP ?

Merci :-)
A+ :)

  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

10

kalamit, le 19 mar 2004 à 13:32:47

Bah non ! Pas possible avec ftp !
Le FTP est une application Client/Server. Jusque la, ok.

Lorsque tu execute cette page php, ou est ton client ftp et ou est ton server ?
Autrement dit, qui execute la fonction php ? Est ce ton browser ou le server php ?
Tu suis mon raisonement ?

En fait, le client c'est le server php, pas ton pc à la maison ! C'est pour ca que cela ne fonctionne pas !

Kalamit,
Parle à ma culasse, mon carter est malade. :)

Répondre à kalamit

11

Thom@s, le 19 mar 2004 à 13:39:03

Resalut Kala !

Merci pour ta réponse :-) et ta patience :)

Donc en fait, ça marcherait si le fichier à transférer était sur la même machine que le serveur PHP; ou bien le serveur PHP sur mon ordi.

C'est ça ? Est-ce que j'ai bien compris ? :-)

Merci Kala ! :)
A+ :)

  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

12

kalamit, le 19 mar 2004 à 13:44:46

Oui, si tu veux...
Pour résumer, les fonctions ftp de php te permette de transiter des fichiers entre un serveur FTP et ton espace web chez ton hebergeur.

Une solution à ton probleme serait de mettre un serveur FTP sur ta machine perso et de faire des get sur le serveur web.

Kalamit,
Parle à ma culasse, mon carter est malade. :)

Répondre à kalamit

13

Thom@s, le 19 mar 2004 à 14:08:22

OK, merci Kala ! :)

  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

14

John NC, le 19 mar 2004 à 15:23:20

Ou aussi d'heberger le tout sur ta machine lol.

Répondre à John NC

15

Thom@s, le 19 mar 2004 à 17:03:41

:-)

  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

16

Thom@s, le 12 mai 2004 à 22:24:28

Encore faut-il le pouvoir :-)

  ___________________
  |__ .: Thom@s :. ___|

Répondre à Thom@s

17

vig2, le 23 jan 2008 à 21:05:41

Bonjour,
j ai un probleme avec un formulaire d'upload de fichier.
J ai beau enlever les elements les plus compliques de mon script, je trouve toujours le meme probleme.
J ai simplifier au maximum mon probleme et si jamais quelqu'un sait pourquoi ca ne marche pas, ca serait sympa de m'aider.
Le resultat de ce script est systematiquement le meme, il m'envoie toujours "ya pas de code" , que j'inserer un fichier ou non...
Merci de votre aide:


<body>
<form id="form1" name="form1" method="post" action="">
<table>
<p>
<tr><td></td>
<td>
<INPUT type='hidden' name='MAX_FILE_SIZE' VALUE=2048>
<input type='file' name='photo' size='10'><br>
</td></tr>
</p>
<tr>
<td>
<input type="submit" name="Submit" value="Submit" />
</td>
</tr>
</table>
</form>
<?php

if(empty($_FILES["photo"]["name"]))
{
echo "ya pas de code";
}
else{
echo "ya un code";
}

?>
</body>

Répondre à vig2

18

ibou52, le 27 jan 2008 à 14:49:22
  • +3

Bonjour vig2,
dans le <form> mets y <FORM method="POST" ENCTYPE="multipart/form-data"> et tu essayes...

Répondre à ibou52

19

 nonolenaufragé, le 29 mai 2009 à 13:45:18

Tu trouveras ton bonheur là-dedans ^^:

http://www.siteduzero.com/

Y'a des tutos pas à pas très complets sur xhtml et php.
Ou alors je te passe un code à moi qui marche... "Google est ton ami"...mouais ! c'est surtout un beau bordel de réponses désodonnées.
Par pitié ! arrêtez de croire que google a réponse à tout !!!!!

Répondre à nonolenaufragé
Collection CommentÇaMarche.net