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] création et Copy fichier et dossier sur serveur distant


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut [FTP] création et Copy fichier et dossier sur serveur distant
    Bonjour je veux creer un dossier dans un serveur distant et faire un copy dedans les fichier a copier se trouvent dans le méme serveur que le fichier creer voici mon code
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    <?php 
     
    function IsDir_or_CreateIt($path) {
        if(is_dir($path)) {
            return true;
        } else {
            if(mkdir($path)) {
                return true;
            } else {
                return false;
            }
        }
    }
     
     
     
    function CopyDir($connect,$origine, $destination) {
        $test = opendir($origine);
     
        $file = 0;
        $file_tot = 0;
     
        foreach($test as $val) {
            if($val!="." && $val!="..") {
                if(is_dir($origine."/".$val)) {
                    CopyDir($origine."/".$val, $destination."/".$val);
                    IsDir_or_CreateIt($destination."/".$val);
                } else {
                    $file_tot++;
                    if(copy($origine."/".$val, $destination."/".$val)) {
                        $file++;
                    } else {
                        if(!file_exists($origine."/".$val)) {
                            echo $origine."/".$val;
                        }
                    }
                }
            }
        }
        return true;
    }
     
    if($_POST['envoyer']){
    $dir=$_POST['dirname'];
    if (!file_exists('www/'.$dir)) {
     
    $conn_id = ftp_connect('www.serveur.com');
    $ftp_user_name = 'username';
    $ftp_user_pass = 'password';
     
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    // Tentative de création du dossier $dir 
    if (ftp_mkdir($conn_id, 'www/'.$dir)) {
    echo "Le dossier $dir a été créé avec succès\n";
    $origine = "ftp://username:password@www.serveur.com/copydir/";
    $destination = "www/".$dir."/";
    if(CopyDir($conn_id,$origine, $destination)) { 
        echo "Le dossier ".$origine." a ete copie avec succes vers ".$destination; 
     
    } else {
    echo "Il y a eu un problème lors de la création du dossier $dir\n";
    }
     
    // Fermeture de la connexion 
    ftp_close($conn_id);
     
    }
     
    }
    }
     
    ?>
    <form action="createdir.php" method="post" name="form1">
    <table width="200" border="">
      <tr>
        <td>Directory Name</td>
     
        <td><input name="dirname" type="text" /></td>
      </tr>
      </tr>
      <tr>
        <td><input name="envoyer" type="submit" value="Create" /></td>
      </tr>
    </table>
     
     
    </form>
    </body>
    </html>
    mais voila le message d'erreur que j'ai avec opendir Warning: opendir(ftp://...@serveur.com/copydir): failed to open dir: not implemented in

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise plutot les fonctions FTP :
    http://fr.php.net/ftp
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    jai changé la fonction copydir par la fonction ftp_put()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (ftp_mkdir($conn_id, 'www/'.$dir)) {
    echo "Le dossier $dir a été créé avec succès\n";
    $origine = "www/copydir/";
    $destination = "www/".$dir."/";
    if(ftp_put($conn_id,$origine, $destination,FTP)) { 
        echo "Le dossier ".$origine." a ete copie avec succes vers ".$destination; 
     
    } else {
    echo "Il y a eu un problème lors de la création du dossier $dir\n";
    }
    maintenant j'ai ce message
    Warning: ftp_put() expects parameter 4 to be long, string given in

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je t'invite a relire la documentation de la fonction
    http://fr.php.net/ftp_put
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    au fait jai mis maintenant a la place de FTP FTP_ASCII ou FTP_BINARY ya plus le message d'erreur mais il ne fait pas la copie il crée simplement le dossier mais

    jai bien lu la doc et jai cette erreur
    cest Warning: dir(1): failed to open dir: No such file or directory in voici le code
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?php
    /*$src_dir = "/from";
    $dst_dir = "/to";*/
    $conn_id = ftp_connect('www.serveur.com');
    $ftp_user_name = 'login';
    $ftp_user_pass = 'pass';
    //ftp_copy($src_dir, $dst_dir);
     
    //ftp_close($conn_id)
     
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    function ftp_copy($src_dir, $dst_dir) {
     
    global $conn_id;
    $directory = ftp_chdir($conn_id,$src_dir);
    $d = dir($directory);
     
        while($file = $d->read()) {
     
            if ($file != "." && $file != "..") {
     
                if (is_dir($directory."/".$file)) {
     
                    if (!@ftp_chdir($conn_id, $dst_dir."/".$file)) {
     
                    ftp_mkdir($conn_id, $dst_dir."/".$file);
                    }
     
                ftp_copy($directory."/".$file, $dst_dir."/".$file);
                }
                else {
     
                $upload = ftp_put($conn_id, $dst_dir."/".$file, $directory."/".$file, FTP_BINARY);
                }
            }
        }
     
    $d->close();
    }
    if($_POST['envoyer']){
    $dir=$_POST['dirname'];
    		if (ftp_mkdir($conn_id, 'www/'.$dir)) {
    		echo "Le dossier $dir a été créé avec succès\n";
    		$origine = "www/copydir";
    		$destination = "www/".$dir."/";
    				if(ftp_copy($origine, $destination)) { 
        			echo "Le dossier ".$origine." a ete copie avec succes vers ".$destination; 
    					}else{
    						echo "copie echouée";
    					}
    		}
    }
    ?>
    s'il vous plait corrigez-moi si jai pas bien écris le programme ça fait presque 2jours que jy suis

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne comprends pas bien ce que tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $directory = ftp_chdir($conn_id,$src_dir);
    $d = dir($directory);
    ftp_chdir retourne TRUE ou FALSE, ca ne peut donc pas etre un parametre pour dir()

    Si j'ai bien tout suivi, tu veux faire une copie de fichiers du serveur A vers le serveur A, en pilotant en PHP depuis ton serveur B ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    oui au fait javais ce code:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?php
    /*$src_dir = "/from";
    $dst_dir = "/to";*/
    $conn_id = ftp_connect('www.serveur.com');
    $ftp_user_name = 'login';
    $ftp_user_pass = 'password';
    //ftp_copy($src_dir, $dst_dir);
     
    //ftp_close($conn_id)
     
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    function ftp_copy($src_dir, $dst_dir) {
     
    global $conn_id;
     
    $d = dir($src_dir);
     
        while($file = $d->read()) {
     
            if ($file != "." && $file != "..") {
     
                if (is_dir($src_dir."/".$file)) {
     
                    if (!@ftp_chdir($conn_id, $dst_dir."/".$file)) {
     
                    ftp_mkdir($conn_id, $dst_dir."/".$file);
                    }
     
                ftp_copy($src_dir."/".$file, $dst_dir."/".$file);
                }
                else {
     
                $upload = ftp_put($conn_id, $dst_dir."/".$file, $src_dir."/".$file, FTP_BINARY);
                }
            }
        }
     
    $d->close();
    }
    if($_POST['envoyer']){
    $dir=$_POST['dirname'];
    		if (ftp_mkdir($conn_id, 'www/'.$dir)) {
    		echo "Le dossier $dir a été créé avec succès\n";
    		$origine = "www/copydir";
    		$destination = "www/".$dir."";
    				if(ftp_copy($origine, $destination)) { 
        			echo "Le dossier ".$origine." a ete copie avec succes vers ".$destination; 
    					}else{
    						echo "copie echouée";
    					}
    		}
    }
    ?>
    cest un code que jai prise sur le lien que vous m'avez passez

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et que donne ce code ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    Warning: dir(www/copydir): failed to open dir: No such file or directory in

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ah non d'accord cette fonction sert a copier une arborescence d'un disque locale vers un FTP.

    Je ne trouve rien pour copier des fichiers d'un serveur FTP sur lui meme par contre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    Merci pour l'idée j'ai mis le dossier a copier sur la machine qui éxécute le script et ça marche parfaitement mon seul probléme cest mineur mais il m'affiche que la copie a échouer alors cest bien copié

  12. #12
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    Pour ceux qui le script interesse il faudrait juste mettre le chemin du repertoire a copier au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $origine = "www/copydir"
    il faudrait mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $origine = "./copydir"
    et s'assurer que cet repertoire et dans le dossier que le fichier qui exécute le programme

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

Discussions similaires

  1. [CS6] Erreur FTP lors d'ouverture d'un dossier sur serveur
    Par kantoras dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 16/05/2014, 10h15
  2. Réponses: 4
    Dernier message: 18/01/2011, 10h31
  3. [FTP] Création d'un fichier en php
    Par kvndevils dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2006, 16h34
  4. [FTP] Accès fichiers sur serveur distant
    Par Mystic eyes dans le forum Langage
    Réponses: 23
    Dernier message: 07/07/2006, 17h06
  5. Créer un dossier sur serveur distant
    Par TorÕ02 dans le forum C++
    Réponses: 7
    Dernier message: 11/10/2004, 17h30

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