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_raw($handle,'LIST') ne retourne pas le listing du directory courant


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    développeur web amateur
    Inscrit en
    Janvier 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2018
    Messages : 40
    Points : 35
    Points
    35
    Par défaut ftp_raw($handle,'LIST') ne retourne pas le listing du directory courant
    Bonjour,
    Je me bats avec un fournisseur dont j'utilise, quand il fonctionne, le serveur FTP.

    Je simule une connexion pour lecture du répertoire courant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $handle = ftp_connect($host);
    ftp_login($handle,$user,$pw) or die('utilisateur non authentifié');
    ftp_pasv($handle,true);
    $liste = ftp_nlist($handle,'/') or die('répertoire non consultable');
    ftp_close($handle) or die('fermeture impossible');
    echo implode('<br>', $liste).'<br>---------------------------<br>';
    et, bien sur, j'obtiens la liste des noms des fichiers présents dans le répertoire courant (racine de cet utilisateur)
    Sauf ... que cela ne fonctionne pas toujours chez le Client.

    Donc, j'ai décidé de reprendre tout au niveau des commandes FTP pour voir les réponses (impossible avec ftp_xxx, sauf ftp_raw() qui rends un tableau des chaines reçues.
    Et pour être certain du résultat, je le teste d'aboird sur un serveur ftp tiers de qualité, où j'ai un petit répertoire. cela ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $handle = ftp_connect($host);
    function send_cde($cde,$arg=null) {
      global $handle;
      echo '<br><br>'.date('d/m:Y H:i:s ').">>>  $cde <br>";
      $reply = ftp_raw($handle,"$cde".(($arg)?" $arg":''));
      echo date('d/m:Y H:i:s ').'<<<  '.implode('<br><'.str_repeat('&nbsp;', 40),$reply);
    }
    send_cde('USER',$user);
    send_cde('PASS',$pw);
    send_cde('PASV');
    send_cde('FEAT');
    send_cde('PASV');
    send_cde('NLST');
    send_cde('QUIT');
    La seule utilité de la commande FEAT est la validation de la gestion des réponses multilignes, utile dans le cas de la commande NLIST.

    et la surprise désagréable est que j'obtiens ceci :
    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
    21/04:2020 15:40:10 >>> USER
    21/04:2020 15:40:10 <<< 331 User mcpTest@speedytools.online OK. Password required
     
    21/04:2020 15:40:10 >>> PASS
    21/04:2020 15:40:10 <<< 230 OK. Current restricted directory is /
     
    21/04:2020 15:40:10 >>> PASV
    21/04:2020 15:40:10 <<< 227 Entering Passive Mode (185,61,153,120,47,32)
     
    21/04:2020 15:40:10 >>> FEAT
    21/04:2020 15:40:10 <<< 211-Extensions supported:
    <                                         EPRT
    <                                         IDLE
    ...
    <                                         SPSV
    <                                         ESTP
    <                                        211 End.
     
    21/04:2020 15:40:10 >>> PASV
    21/04:2020 15:40:10 <<< 227 Entering Passive Mode (185,61,153,120,47,88)
     
    21/04:2020 15:40:10 >>> NLST
    21/04:2020 15:41:40 <<<
     
    21/04:2020 15:41:40 >>> QUIT
    21/04:2020 15:43:10 <<<
    Où, non seulement la commande NLIST ne rend pas la liste des noms mais elle bloque le système pendant le timeout, et les comman des suivantes (ici quit) font de même.
    J'obtiens le même résultat avec la commande LIST.

    J'ai beau relire mes docs dans tous les sens, ftp_raw devrait rendre toutes les lignes émises suite à la commande (ce qu'il fait très bien avec la commande FEAT).

    Si quelqu'un à une idée, une piste, un éclairage ou toute autre solution pour ce point, je le remercie par avance.
    Merci de m'indiquer mes erreurs et/ou le moyen d'obtenir par ftp_raw la liste des fichiers du répertoire, avec les lignes de réponses qui vont avec (150 ... avant et 226 ...après).

  2. #2
    Membre averti Avatar de Amélie Ladoque
    Inscrit en
    Novembre 2004
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 261
    Points : 322
    Points
    322
    Par défaut
    Monte ton propre serveur FTP et teste ton script dessus.
    Tu sauras si l'erreur vient du 1er ou du 2nd.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    développeur web amateur
    Inscrit en
    Janvier 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2018
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Bonjour Amélie,

    Merci pour ta réponse.
    Par mon propre serveur ftp, tu entends sur le mm PC ?
    Parce que tous mes hébergements sont sur des serveurs mutualisés, donc ce n'est pas forcément si simple ...

    Sinon, une idée sur le fait que les 3 commandes de listage des fichiers ont toutes le mm comportement ne correspondant pas à ce qu'on attends d'elles ?

    à te lire,
    Merci par avance

Discussions similaires

  1. la fonction size d'une liste ne retourne pas un entier
    Par cyclopsnet dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 27/07/2009, 18h50
  2. getParent() ne retourne pas le bon parent avec JMenuItem
    Par kesiahlex dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/04/2006, 15h19
  3. [Oracle] oci_num_rows ne retourne pas de résultat (0)
    Par osmoze dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 19/04/2006, 17h13
  4. Query Contains dans Full-Text qui ne retourne pas de valeurs
    Par icebe dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/02/2006, 14h04
  5. [VB.NET] DataSet qui ne retourne pas de résultat
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2004, 17h07

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