Page 1 sur 1

Poster un fichier sur un serveur ftp

Posté : 08 mars 2015, 17:02
par Charles Lalieu
Bonjour,

Je souhaite poster, en PHP, un fichier "rapport.zip" se trouvant dans le meme dossier vers un serveur ftp.
Je pensait avoir bien compris la procedure en suivant un tuto mais lorsque je lance mon fichier ca mouline et ne fait rien !

Voici mon code

Code : Tout sélectionner

<?php // Poster un fichier se trouvant dans mon dossier actuel vers une adresse ftp $serveur="ftp.ouvaton.coop"; $login="MaTaTa"; $pass="AcouNa"; $fichier="rapport.zip"; //je me connecte $ftp = ftp_ssl_connect("$serveur", 21) or exit('Erreur : connexion au serveur FTP impossible.'); //je me presente ftp_login($ftp, "$login", "$pass"); //je poste le fichier ftp_put($ftp, "$fichier", "$fichier", FTP_BINARY); //je ferme la connction ftp_close($ftp); ?>
Pouvez-vous me conseiller ? Merci.

Re: Poster un fichier sur un serveur ftp

Posté : 08 mars 2015, 19:48
par moogli
salut,

Souvent le mode passif est une solution sur les connexions FTP.
est ce que cela fonctionne avec une connexion ftp sans ssl ?
est ce que le niveau de rapport d'erreur est bien E_ALL (et est ce que les erreurs sont bien affichées ) ?
que retourne ftp__login ? (c'est important de toujours tester les retours de fonction pour savoir si tous c'est bien passé ;) (par contre pas de die, un if fait très bien l'affaire et permet d'afficher un message correctement sans laisser l'utilisateur sur un bout de page blanche avec un message abscon ;)

Il est possible de réduire le time out sur la connexion histoire de pass attendre pour rien en cas d'erreur (90s c'est long).
Est ce qu'il y a un log ftp sur le serveur distant pour voir s'il ne contiendrait pas des erreurs.

Pour info l'utilisation des " autours des variiables est inutile (et anti perfomant ;)).
du coup je ferais un truc comme ça

<?php

$serveur="ftp.timon.poumba.ext";
$login="MaTaTa";
$pass="AcouNa";
$fichier="rapport.zip";

$ftp = ftp_ssl_connect($serveur, 21,30);
if($ftp === false) {
echo 'Connexion impossible vérifier les paramètres !';
}else {
$r = ftp_login($ftp, $login, $pass);
if($r === false) {
echo 'Utilisateur / mot de passe ftp invalide';
}else {
ftp_pasv($ftp, true);
ftp_put($ftp, $fichier, $fichier, FTP_BINARY);
ftp_close($ftp);
}
}
?>
désolé pour l'indentation je n'ai pas d'ide sous main

@+

Re: Poster un fichier sur un serveur ftp

Posté : 08 mars 2015, 20:09
par Charles Lalieu
Un grand merci Moogli !
Je ne connaissait pas le mode passif et ma syntaxe va s'améliorer avec lapratique.
J'essaierai de ne plus utiliser les guillemet autours de variables et j'ai appris que l'on pouvait utiliser le triple === dans un test de fonction IF.
Ca marche bien.