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] Erreur retournée lors de l'utilisation de Ftp_put


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut [FTP] Erreur retournée lors de l'utilisation de Ftp_put
    Bonjour je me présente Greg jeune développeur en 2 années de BTS informatique de gestion option DA . Je me permets de créer ce post pour qu’une âme charitable puisse m’aider dans mon problème qui est que je dois rendre un module Admin vendredi matin dans lequel l’admin peu créer lui-même ces news. J’ai pratiquement tous finie sauf la partie Upload :
    En effet l'admin peu uploder ces photos de son disque dur a un serveur FTP dans un dossier (ftp://greg.com/project/test/images/).
    Je n’y arrive pas du tout . Je me connecte sur mon ftp correctement mais durant l’upload
    Une erreur me prévient que la fonction Ftp_put ne marche pas :
    Warning: ftp_put() expects parameter 1 to be resource, string given in C:\wamp1.6\www\greg\upload2.php on line 25
    fichierArraynon uploadé.
    Voila mon dilemme. Si quelqu’un voudrais bien se pencher sur mon code source que voici je lui en serais reconnaissant…


    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
    <html>
    <head><title>Uploadez vos images!</title></head>
    <body>
    <form method="post" enctype="multipart/form-data" action="upload2.php?data=envoie">
    <input type="file" name="fichier">
    <input type="submit" value="Envoyer">
    </form>
    <?php
    if ($_GET['data']==envoie ){
    // Paramètres
    $ftp_server = "ftp.greg.com"; 
    $ftp_user_name = "xxxxxxxxxx"; 
    $ftp_user_pass = "xxxxxxxxxxxxx";
    $rep = "/project/test/images/";
    $file = $_FILES['fichier'];  
    // Connexion
    $conn_id = ftp_connect($ftp_server);
    // Identification par login et mot de passe
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    // Vérification de la connexion
    if ((!$conn_id) || (!$login_result)) 
    	{
        die("La connexion FTP a échoué!");
    	}
    elseif (ftp_put("$conn_id","$rep/$file","$file",FTP_BINARY)){
    echo '<br><br>fichier'.$file.'uploadé';
    }
    else
    {
    echo '<br><br>fichier'.$file.'non uploadé';
     } 
    ftp_quit($conn_id);
    } 
    ?>
    </body></html>

    ps:le titre du fichier souce est upload2.php

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    L'interpolation, ici, sur $conn_id pose problème et est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftp_put($conn_id, "$rep/$file", $file, FTP_BINARY)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Je viens de supprimer l’interpolation" $conn_id " cela me donne :
    elseif (ftp_put("$rep/$file","$file",FTP_BINARY))
    Le fait est que ftp_put a besoin de 4 paramètres pas 3 alors il me retourne comme erreur

    Warning: ftp_put() expects at least 4 parameters, 3 given in …
    fichierArraynon uploadé

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Je viens de supprimer l’interpolation" $conn_id " cela me donne :
    elseif (ftp_put("$rep/$file","$file",FTP_BINARY))
    Le fait est que ftp_put a besoin de 4 paramètres pas 3 alors il me retourne comme erreur

    Warning: ftp_put() expects at least 4 parameters, 3 given in …
    fichierArraynon uploadé

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Je vous ai donné une correction L'interpolation c'est simplement le fait qu'une variable est remplacée par sa valeur dans une chaîne délimitée par des doubles quotes.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Je ne comprend pas bien ce que tu veux dire par rapport a :
    $conn_id
    Je voudrais juste que l'ont puisse me donner une correction de mon code afin de le rendre fonctionel et m'expliquer ou j'ais fauté.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Je l'ai déjà fait :
    Citation Envoyé par julp
    L'interpolation, ici, sur $conn_id pose problème et est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftp_put($conn_id, "$rep/$file", $file, FTP_BINARY)
    Que cela vous donne-t-il ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    j'ais comme resultat:

    Warning: ftp_put() expects parameter 3 to be string, array given in ...

    fichierArraynon uploa
    Pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    elseif (ftp_put($conn_id,"$rep/$file",$file,FTP_BINARY)){
    echo '<br><br>fichier'.$file.'uploadé';
    3 paramètres doivent être une chaîne de caractère. Je pense qu’il faut conserver les quotes.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Non justement. Bon on avance, celle-ci est due à votre affectation puisque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file = $_FILES['fichier'];
    $file est un tableau de la forme :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Array(
        'name' => 'desc.xml',
        'tmp_name' => '/tmp/phpA3.tmp',
        'error' => 0,
        'type' => 'text/xml',
        'size' => 1024
    )
    Donc il faudrait modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file = $_FILES['fichier']['tmp_name'];
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftp_put($conn_id,"$rep/$file",$file['tmp_name'],FTP_BINARY)

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Effectivement $files est un tableau.
    Apres avoir effectuer ces changements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file = $_FILES['fichier']['tmp_name'];
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     elseif 
    /*ligne 25*/(ftp_put($conn_id,"$rep/$file",$file['tmp_name'],FTP_BINARY)){
    echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
    }
    else
    {
    echo '<br><br>fichier'.$file['tmp_name'].'non uploadé'; 
     } 
    ftp_quit($conn_id);
    j’ais une erreur que je n’ais jamais vu :
    Warning: ftp_put(c) [function.ftp-put]: failed to open stream: No such file or directory in ….on line 25
    fichier c non uploadé
    Je ne comprend pas parce que je ne sais pas ce que veux dire « stream » dans ce cas precis ?

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Je veins de faire d'autre modification et voila 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
    <html>
    <head><title>Uploadez vos images!</title></head>
    <body>
    <form method="post" enctype="multipart/form-data" action="upload2.php?data=envoie">
    <input type="file" name="fichier">
    <input type="submit" value="Envoyer">
    </form>
    <?php
    if ($_GET['data']==envoie ){
    // Paramètres
    $ftp_server = "ftp.greg.com"; 
    $ftp_user_name = "xxxxxxxx"; 
    $ftp_user_pass = "xxxxxxxxx";
    $rep = "/project/test/images/";
    $file = $_FILES['fichier']; 
    // Connexion
    $conn_id = ftp_connect($ftp_server);
    // Identification par login et mot de passe
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    // Vérification de la connexion
    if ((!$conn_id) || (!$login_result)) 
    	{
        die("La connexion FTP a échoué!");
    	}
    elseif (ftp_put($conn_id,"$rep/$file",$file['tmp_name'],FTP_BINARY)){
    echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
    }
    else
    {
    echo '<br><br>fichier'.$file['tmp_name'].'non uploadé';
     } 
    ftp_quit($conn_id);
    } 
    ?>
    </body></html>
    J'ais comme reponse:
    fichierc:/wamp1.6/tmp\phpE8.tmpuploadé
    mais aucun fichier dans mon ftp a /project/test/images/
    En clair mon module fonctionne a moitié.

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    J'ai oublié d'en corriger un bout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftp_put($conn_id, $rep . $file['name'], $file['tmp_name'], FTP_BINARY)
    Puisque $rep termine déjà par un slash lors de son initialisation, inutile d'en rajouter un

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Merci à toi julp ton aide ma beaucoup Apporté ( ). Mon module est maintenant prêt grâce à toi. Pour ceux qui voudraient effectuer des upload(s) sur leur FTP voila le code source corrigé :

    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
    <html>
    <head><title>Uploadez vos images!</title></head>
    <body>
    <form method="post" enctype="multipart/form-data" action="upload2.php?data=envoie">
    <input type="file" name="fichier">
    <input type="submit" value="Envoyer">
    </form>
    <?php
    if ($_GET['data']==envoie ){
    // Paramètres
    $ftp_server = "ftp.greg.com"; 
    $ftp_user_name = "mon_login"; 
    $ftp_user_pass = "mon_pass";
    $rep = "/project/test/images/";//mon dossier de destination dans le ftp
    $file = $_FILES['fichier']; 
    // Connexion
    $conn_id = ftp_connect($ftp_server);
    // Identification par login et mot de passe
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    // Vérification de la connexion
    if ((!$conn_id) || (!$login_result)) 
    	{
        die("La connexion FTP a échoué!");
    	}
    elseif (ftp_put($conn_id, $rep . $file['name'], $file['tmp_name'], FTP_BINARY)){
    echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
    }
    else
    {
    echo '<br><br>fichier'.$file['tmp_name'].'non uploadé';
     } 
    ftp_quit($conn_id);
    } 
    ?>
    </body></html>
    Et voila ...

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Encore une correction remplacez les :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    elseif (ftp_put($conn_id, $rep . $file['tmp_name'], $file['tmp_name'], FTP_BINARY)){
    echo '<br><br>fichier'.$file['tmp_name'].'uploadé';
    }
    else
    {
    echo '<br><br>fichier'.$file['tmp_name'].'non uploadé';
     }
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    elseif (ftp_put($conn_id, $rep . $file['name'], $file['tmp_name'], FTP_BINARY)){
    echo '<br><br>fichier'.$file['name'].'uploadé';
    }
    else
    {
    echo '<br><br>fichier'.$file['name'].'non uploadé';
     }
    comme cela vous pouvez recuperez le nom du fichier.

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

Discussions similaires

  1. ftp erreur 421 lors du téléchargement
    Par clément59 dans le forum VB.NET
    Réponses: 4
    Dernier message: 19/02/2013, 15h25
  2. Réponses: 0
    Dernier message: 30/07/2008, 16h39
  3. [PEAR][HTML_QuickForm] Erreur 404 lors de l'utilisation de PEAR
    Par Hguran dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/04/2008, 15h41
  4. Erreur exécution lors de l'utilisation d'une liste déroulante
    Par nomade333 dans le forum Modélisation
    Réponses: 3
    Dernier message: 29/03/2008, 16h28
  5. [FTP] Erreur d'utilisation de require_once
    Par dialydany dans le forum Langage
    Réponses: 14
    Dernier message: 06/11/2005, 18h46

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