Aller au contenu

File download


Sujets conseillés

Posté (modifié)

Bonjour



Je code :



$source_file = “/home/aaa/www/tete/aaabase3.sql”;
$handle = fopen($destination_file, 'w');
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$passif = ftp_pasv($conn_id, true);
$download = ftp_fget($conn_id, $handle, $source_file, FTP_BINARY, 0);

pour télécharger en mode passif un fichier depuis mon site sur mon PC.



J’ai cette erreur :



Warning: ftp_fget() [function.ftp-fget]: Can't open /home/aaa/www/tete/aaabase3.sql: No such file or directory in /home/aaa/…


Je n’arrive pas à exprimer le nom du fichier source en dépit de mes essais successifs.



Merci par avance de votre aide.



Francois


Modifié par francoisch
Posté

Et ton $destination_file, il vaut quoi ?


Tu es certain qu'il n'ait pas la même valeur que $source_file ?

Posté (modifié)

Mon script et le fichier local sont dans le même dossier /tete.



C'est une difficulté?



Francois



+++++++++++++++



J'ai mis le script et le fichier local dans la racine: même erreur.



Francois


Modifié par francoisch
Posté (modifié)

J'ai fait des corrections, l'exécution semble se dérouler normalement mais:
- le fichier destination n'est pas créé
- le fichier source est mis à 0

Francois

+++++++++++++

Je viens de nommer le fichier destination d’un nom différent de celui du fichier source.

Le résultat :

  • Le fichier destination n’est tjs pas créé
  • Le fichier source est renommé du nom du fichier destination (surprise)

Où est l’erreur ?

Francois

Modifié par francoisch
Posté

Je viens de nommer le fichier destination, qui est par hypothèse sur mon PC, d’un nom simple D:/aaabase3.sql.



J’ai cette erreur :



Warning: fopen(D:/aaabase3.sql) [function.fopen]: failed to open stream: No such file or directory in /home …


Mon problème se situe manifestement dans le nom du fichier de destination.



A votre avis ?



Francois

Posté

Bonjour



Je code :



$source_file = “/home/aaa/www/tete/aaabase3.sql”;
$destination_file = “D:/aaabase3.sql”;

$download = ftp_get($conn_id, $destination_file, $source_file, FTP_BINARY, 0);

pour télécharger en mode passif un fichier depuis mon site sur mon PC.



J’ai cette erreur :



Warning: fopen(D:/aaabase3.sql) [function.fopen]: failed to open stream: No such file or directory in /home …


Merci par avance de votre aide.



Francois

Posté

bonjour Dan



Comme débutant sur ce sujet, j'ai repris des exemples trouvés sur la toile.



Je n'y ai rien trouvé qui caractérise mon PC si c'est bien le sujet que tu soulèves.



Tu peux détailler un peu?



Merci à toi.



Francois


Posté

Il faut bien que ton serveur connaisse l'adresse IP (au moins) ou le nom (s'il est connu sur le net) de ton PC...


Sinon, comment veux-tu qu'il sache vers quelle bécane envoyer les fichiers ?



Mais je pense qu'il serait plus simple de lancer ftp sur ton PC et d'aller chercher les fichiers sur ton serveur. Tu n'auras pas de souci dus au firewall sur ta FreeBox !


Posté

bonjour Dan



Oui, tout à fait d'accord, il faut que le serveur FTP sache adresser mon PC, mais comment?



Ma box a une adresse IP fixe et je pourrais faire un reroutage de port.



Ca donnerait au fichier de destination sur mon PC un nom du genre 123.456.789.345:345/D:/monfichier.aze



A ton avis, ça pourrait marcher?



Je vais ça pour automatiser mes téléchargements avec une tâche planifiée; naturellement, je télécharge mes fichiers manuellement pour le moment.



Bonne année à toi et merci de ton aide.



Francois


Posté

Non, il faut simplement, avant d'ouvrir la connexion ftp, mettre l'IP de ton PC (ou de ta box) come HOST.

Par exemple comme ceci :

<?php

$ftp_server
= "ftp.example.com";
$ftp_user = "foo";
$ftp_pass = "bar";

// Mise en place d'une connexion basique
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// Tentative d'identification
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
echo
"Connecté en tant que $ftp_user@$ftp_server\n";
} else {
echo
"Connexion impossible en tant que $ftp_user\n";
}


// Fermeture de la connexion
ftp_close($conn_id);
?>

Avec l'IP de ta BOX à la place de ftp.example.com

Encore faut-il que ton PC réponde à une requête ftp...

Posté

bonjour Dan



Mon fichier Hosts est dans son état original, indiquant:


#

# 102.54.94.97 rhino.acme.com # source server

# 38.25.63.10 x.acme.com # x client host


# localhost name resolution is handled within DNS itself.

# 127.0.0.1 localhost

# ::1 localhost


Faut-il ajouter une ligne comme ça:

123.154.198.13 ???? # ma box

sans que je sache bien quoi mettre pour remplacer ????



Par ailleurs, que faudrait-il pour que mon PC réponde à une requête Ftp? Qu'il soit sous tension avec un client Ftp actif?



Aussi, comment la requête Ftp qui ne connaîtra que la box, arrivera t elle à mon PC? J'ajoute un port, avec une redirection de port, à l'adresse IP de la box?



Merci de ton aide précieuse.



Francois


Posté

Pas besoin de modifier ton fichier /etc/hosts pour cela.


Tu peux simplement mettre l'IP de ta box dans l'appel à ftp_connect().



Mais je t'ai dit plus haut que le plus simple était de lancer le transfert dans l'autre sens. Donc que ton PC aille chercher les fichiers.


Parce que je ne peux pas configurer ta box ou ton PC à distance si tu ne sais pas le faire...


Posté

Effectivement, le ftp_get semble compliqué à mettre en oeuvre.



As tu une suggestion de mise en oeuvre de lancement dans l'autre sens que je puisse automatiser?



Merci à toi.



Francois


Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...