IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

ftp_put, comment créer le fichier en local


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut ftp_put, comment créer le fichier en local
    Bonjour,

    j'ai un fichier $msg que je dois à la fois envoyer sur mon serveur et sur le serveur FTP d'un partenaire.

    Pour le charger sur mon serveur c'est facile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $co_txt = 'monfichier.txt';
     
    $file = fopen ("mon_dossier_distant/$co_txt", 'w+');
    if (-1 == fwrite ($file, $msg)) {die ('Enregistrement Impossible');}
    fclose ($file);
    Ensuite je me connecte sur le FTP du partenaire, pas de message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $file = "mon_site/mon_dossier_distant/$co_txt";
     
    $remote_file = $tab['Rep'] . '/' . $co_txt;
     
    print $remote_file . '<br>' . $file  . '<br>' . $tab['Type'];
    // Retourne
    POR/19.txt
    https://www.mon_site/mon_dossier_distant/19.txt
    FTP_BINARY
     
     
    ftp_put ($conn_id, $remote_file, $file, $tab['Type']);
    Je me prends un warning

    Warning: ftp_put() expects parameter 4 to be int, string given...

    Et le chargement sur le site du partenaire ne se fait pas.

    Je suppose que $file doit être un fichier local.

    Mais je n'ai trouvé nulle part la façon de créer le créer le fichier local et de donner ensuite une bonne adresse à ftp_put.

    Merci de votre aide.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 59
    Points : 54
    Points
    54
    Par défaut
    Pour ce qui est de l'erreur, le paramètre mode doit être soit FTP_ASCII, soit FTP_BINARY.

    Exemple pour uploader un fichier sur un serveur distant (exemple du site d'aide de php)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $file = 'somefile.txt';
    $remote_file = 'readme.txt';
     
    // Mise en place d'une connexion basique
    $conn_id = ftp_connect($ftp_server);
     
    // Identification avec un nom d'utilisateur et un mot de passe
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    // Charge un fichier
    if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
     echo "Le fichier $file a été chargé avec succès\n";
    } else {
     echo "Il y a eu un problème lors du chargement du fichier $file\n";
    }
     
    // Fermeture de la connexion
    ftp_close($conn_id);

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    Merci de ta réponse mais mon problème est d'envoyer ce fichier sur un autre serveur et c'est là où je bloque.

    2) La valeur que j'envoie est FTP_BINARY.
    Et je ne comprends rien à ce warning qui me demande un int alors que à ma connaissance FTP_BINARY ou FTP_ASCII sont des chaines.

    3) Dans ton exemple :

    $file = 'somefile.txt';.

    Il me semble que dans mon exemple :

    $file = 'mon_dossier_distant/19.txt';.

    C'est bien là où se trouve le fichier.

    Où est l'erreur...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut
    Je pense avoir réglé les problèmes.
    ftp_pasv ($conn_id, TRUE);.

    Il semble que sur le serveur du partenaire il faille être en mode passif.

    FTP_BINARY.

    Cette valeur provenait d'un tableau externe.

    $tab = array ('Type' => 'FTP_BINARY');.

    Il faut enlever les apostrophes autour de FTP_BINARY.

    $tab = array ('Type' => FTP_BINARY);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer un fichier texte?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 08/05/2005, 19h53
  2. Réponses: 22
    Dernier message: 24/04/2005, 16h49
  3. [C#] [XML] Comment créer un fichier XML
    Par pc152 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 28/09/2004, 13h41
  4. Comment créer un fichier dummy de taille donnée ?
    Par Maitre Kanter dans le forum Langage
    Réponses: 3
    Dernier message: 13/12/2003, 23h46
  5. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo