OVH Cloud OVH Cloud

Probleme de FTP

1 réponse
Avatar
Jean Francois Ortolo
Bonjour
Je suis en train de compléter mon site, pour faire des uploads par
FTP en mode passif ( avec ftp_pasv($conn_id, true); ), cause j'ai un
firewall qui accept en UDP et TCP les accès au port 20 ( ftp-data ) sur
ma machine en réception et émission, mais pas les accès au port 21 sur
ma machine, cause j'ai peur des accès venant de l'extérieur.


J'ai besoin de trois infos:

1- Le mode de transfert est-il bien FTP_BINARY ou FTP_ASCII, et non
pas $FTP_BINARY ou $FTP_ASCII ? Ces constantes sont-elles déclarées
quelque part dans un fichier qu'il faudrait adjoindre à mon script, ou
sont-elles déjà valables vu que le serveur Apache a FTP correct ? Si
c'est FTP_BINARY ou FTP_ASCII, quelles valeurs ont ces constantes, et
comment se fait-il qu'ells n'aient pas de dollar au début ?

2- En mode passif, j'obtiens pour l'instant un warning: "Connection
data well initialized from adresse:port". Donc apparemment ça commence bien.
Et puis le ftp_fput me renvoit une valeur false, vu que mon
programme indique que le transfert n'a pu se faire. Comment faire pour
que ce transfert se fasse ? Le fait que mon firewall interdise les accès
au port 21 ( ftp ) sur ma machine est-il en cause ? Quels ports et pour
quels protocoles en réception, ma machine doit-elle accepter pour
pouvoir faire un transfert en mode passif ?

3- Quels sont les ports que ma machine doit accepter, et pour quels
protocoles, pour qu'un transfert FTP en mode actif ( ftp_pasv, false); )
soit possible ? Quand j'essaye celà, le programme attend quelques
minutes, puis me donne le warning suivant: "Command PORT succeeded",
donc correct, mais le transfert ne se fait pas, et ftp_fput renvoie false.

Après tests, mon serveur FTP a bien un fichier du nom correct
$destination_file, mais il contient 0 octets.

En gros donc: Problèmes de firewall, et problème de constante
FTP_BINARY et FTP_ASCII.

Enfin, j'ajoute que l'url de connexion est la même que celle que
j'utilise sous ncftp, c'est l'url de mon site: "ortolojf-courses.com".

Faut-il que j'ajoute un préfixe "ftp." , pour faire
ftp.ortolojf-courses.com ,alors que ncftp arrive très bien à se
connecter à ortolojf-courses.com directement ?

L'instruction ftp_fput a les bons paramètres, c'est-à-dire:

ftp_fput($conn_id, $destination_file, $fp_upload_file, $ftp_mode);
Donc $ftp_mode devrait avoir la valeur FTP_BINARY ou $FTP_BINARY.

$fp_upload_file est le handler du fichier à copier, ouvert en
écriture ( fopen($upload_file, "w"); ), et qui a été écrit à la volée,
et ayant eu un rewind($fp_upload_file); après écriture, pour
réinitialiser le pointeur de fichier. Avec un sleep(1); pour faire bonne
mesure.

Le contenu du fichier à copier est entièrement correct, il contient à
peu près 1000 octets, c'est un fichier ASCII, mais je préfère le
transférer en binaire, cause les retours chariots.

La connexion est correcte, vérifiée au moment du ftp_connect, et du
ftp_login.

Merci beaucoup de vos réponses.

Jean Francois Ortolo

--
Visitez mon Site entièrement gratuit
donnant des Statistiques et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com

Pour me répondre, enlevez .no_reply

1 réponse

Avatar
Jean Francois Ortolo
Bonsoir
Finalement, le problème était facile à résoudre.

C'était la constante FTP_BINARY , et non pas $FTP_BINARY.

Et mon firewall était stateful, et bloquait les tentatives de
connexion venant du site remote.

En condition réelle d'utilisation, il n'y aurait pas eu de problèmes.

Maintenant, ça marche très bien, cette nouvelle fonctionnalité de mon
site est opérationnelle ( chez moi seulement pour l'instant. )

Cà marche très bien en mode actif. Je n'ai pas essayé en mode passif,
j'ai peur que des octets ne passent pas de manière aléatoire...

Bien à vous.

Jean Francois Ortolo

--
Visitez mon Site entièrement gratuit
donnant des Statistiques et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.ortolojf-courses.com