Accueil > Tutoriels pour Webmasters > Dézipper un fichier zip en PHP

Dézipper un fichier zip en PHP

Lors de la conception d'une application web, il est parfois nécessaire de devoir décompresser des archives compressées au format ZIP. C'est le cas par exemple lorsqu'une application laisse les utilisateurs uploader des archives ZIP.

Fonction PHP pour décompresser des archives ZIP

La fonction suivante permet de dézipper facilement des archives. Il suffit d'indiquer le nom du fichier et le dossier de destination dans lequel les fichiers compressés doivent être envoyés.

  1. <?php
  2. function unzip_file($file, $destination) {
  3. // Créer l'objet (PHP 5 >= 5.2)
  4. $zip = new ZipArchive() ;
  5. // Ouvrir l'archive
  6. if ($zip->open($file) !== true) {
  7. return 'Impossible d'ouvrir l'archive';
  8. }
  9. // Extraire le contenu dans le dossier de destination
  10. $zip->extractTo($destination);
  11. // Fermer l'archive
  12. $zip->close();
  13. // Afficher un message de fin
  14. echo 'Archive extrait';
  15. }
  16.  
  17. // Exemple d'utilisation
  18. unzip_file('archive.zip', '/archive-destination/');
  19. ?>

Ce code peut être utilisé que pour les versions de PHP 5 supérieur ou égale à 5.2. A noter, que s'il n'est pas possible d'ouvrir le fichier .zip alors la fonction retournera un message d'erreur.

Il ne faut pas hésiter à tester la fonction avec des fichiers de tests. Cela permet de s'assurer que les répertoires possèdent les bons droits en lecture et en écriture.