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 :

Problème de décompression


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 160
    Points
    160
    Par défaut Problème de décompression
    Bonjour à tous !

    J'ai un problème un peu particulier pour décompresser une archive zip sur un serveur distant. Le mécanisme est le suivant :

    Une fois que l'utilisateur a choisi son fichier, il est d'abord uploadé sur le serveur web (sous Windows), puis recopié sur un ou plusieurs autres serveurs (sous linux) via la fonction suivante :

    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
     
    function copier_livrables_sur_serveur($nom_fichier_source, $nom_fichier_destination , $nom_serveur)
    {
      // Définition des variables
      $serveur_ip = get_serveur_ip($nom_serveur);
      $user_ssh = "daffy";
      $mot_de_passe = "acme";
      $retour_copie = 1;
     
      // On vérifie le retour de la fonction
      if($serveur_ip == 1) {
        return $retour_copie;
        exit;
      }
     
      // Connexion au serveur
      if (!function_exists("ssh2_connect")) die("fonction ssh2_connect n'existe pas");
      if(!($con = ssh2_connect($serveur_ip, 22))){
        echo "erreur: Impossible d'établir une connexion\n";
      }
      else {
        // On essaie de s'authentifier avec les identifiants
        if(!ssh2_auth_password($con, $user_ssh, $mot_de_passe)) {
          echo "erreur: Impossible de s'authentifier\n";
        }
        else {
          // On copie le fichier sur le serveur
          ssh2_scp_send($con, $nom_fichier_source, '/appli/daffy/INST/'.$nom_fichier_destination, 0664);
          $retour_copie = 0;
        }
      }
    }
    Ensuite, je veux décompresser le fichier dans le même répertoire, via une autre fonction :
    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
     
    function decompresser_livrables_sur_serveur($nom_fichier, $rep_source, $nom_serveur)
    {
      // Définition des variables
      $serveur_ip = get_serveur_ip($nom_serveur);
      $user_ssh = "daffy";
      $mot_de_passe = "acme";
      $requete = "cd ".$rep_source.";unzip ".$nom_fichier." 2>&1";
      //DEBUG - echo $requete;
      $retour_decomp = 1;
     
      // On vérifie le retour de la fonction
      if($serveur_ip == 1) {
        return $retour_decomp;
        exit;
      }
     
      // Connexion au serveur
      if (!function_exists("ssh2_connect")) die("fonction ssh2_connect n'existe pas");
      if(!($con = ssh2_connect($serveur_ip, 22))){
        echo "erreur: Impossible d'établir une connexion\n";
      }
      else {
        // On essaie de s'authentifier avec les identifiants
        if(!ssh2_auth_password($con, $user_ssh, $mot_de_passe)) {
          echo "erreur: Impossible de s'authentifier\n";
        }
        else {
          // On décompresse le fichier
         if(!($stream = ssh2_exec($con, $requete )) ){
           echo "erreur: Impossible de lancer la commande\n";
         } else{
             sleep(1);
             stream_set_blocking( $stream, true );
             $data = "";
             $data = stream_get_contents($stream);
             while( $buf = fread($stream,4096) ){
                $data .= $buf;
             }
             fclose($stream);
             //DEBUG
            // echo "<br><p>".$data."</p>";
            }
          $retour_decomp = 0;
        }
      }
    }
    Mon problème, c'est que le fichier n'est pas décompréssé, car il n'est plus reconnu comme un fichier zip valide.

    L'erreur est :
    Archive: test.zip
    End-of-central-directory signature not found. Either this file is not
    a zipfile, or it constitutes one disk of a multi-part archive. In the
    latter case the central directory and zipfile comment will be found on
    the last disk(s) of this archive.
    unzip: cannot find zipfile directory in one of test.zip or
    test.zip.zip, and cannot find test.zip.ZIP, period.
    J'ai fait un test en recopiant le fichier manuellement sur le serveur, puis en le décompressant via la commande unzip, ça fonctionne.
    Je ne comprends pas pourquoi l'archive n'est plus reconnu comme un zip valable, quelq'un aurait il une idée ?

    Merci d'avance,
    Michael

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 160
    Points
    160
    Par défaut
    Un peu de neuf, j'ai continué mes tests, et j'ai l'impression que le problème se produit de façon assez aléatoire. Quelquefois tout marche, d'autre fois, nada.
    Je fouille le web avec Google, et bien que je ne sois pas tout seul a avoir le problème, il n'y a pas l'air d'avoir de solutions évidente.

    Je me demande si le problème ne vient pas de la version du unzip que j'utilise.

Discussions similaires

  1. [unzip] Problème pour décompresser une archive zip
    Par lammouch dans le forum MATLAB
    Réponses: 11
    Dernier message: 03/04/2008, 17h56
  2. Problème de décompresser un InputStream
    Par taouja dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 18/04/2007, 09h53
  3. Problème de décompression
    Par Mikrob dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 27/02/2007, 21h05
  4. Problème lors de décompression zip
    Par LuckyLuke56 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 19/10/2006, 00h39
  5. 7-Zip - Problème de décompression en ligne de commande
    Par Lorponos dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 26/07/2006, 15h07

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