W3docs

zip_open()

La fonction zip_open() est une fonction intégrée en PHP utilisée pour ouvrir un fichier d'archive zip et retourne une ressource d'archive zip.

Remarque : zip_open() a été dépréciée dans PHP 7.1 et supprimée dans PHP 8.0. Cette fonction est fournie uniquement pour la compatibilité avec l'ancien code. Pour les applications PHP modernes, utilisez la classe ZipArchive à la place.

La fonction zip_open() est une fonction intégrée en PHP qui était utilisée pour ouvrir un fichier d'archive zip. La fonction retourne une ressource d'archive zip qui peut être utilisée pour lire et manipuler le contenu de l'archive.

Syntaxe

La syntaxe de la fonction zip_open() est la suivante :

Syntaxe de la fonction zip_open() en PHP

resource zip_open(string $filename [, int $flags [, string &$error ]])

Où :

  • $filename est le chemin vers le fichier d'archive zip à ouvrir.
  • $flags est un entier optionnel de drapeaux qui modifient la façon dont l'archive est ouverte. En pratique, ce paramètre est rarement utilisé et est généralement passé à 0.
  • $error est une variable de référence optionnelle. En cas d'échec de l'ouverture, PHP la définit sur un code d'erreur numérique afin que vous puissiez savoir pourquoi l'ouverture a échoué.

En cas de succès, la fonction retourne une ressource d'archive zip (un handle opaque). En cas d'échec, elle retourne soit false, soit dans certaines versions, un code d'erreur entier — testez donc toujours le résultat avant de l'utiliser.

Pourquoi a-t-elle été supprimée ?

zip_open() appartient à l'ancienne API Zip procédurale (zip_open(), zip_read(), zip_close(), et les fonctions auxiliaires zip_entry_*()). Cette API a été dépréciée dans PHP 7.1 et entièrement supprimée dans PHP 8.0. Le remplacement est la classe orientée objet ZipArchive, qui est plus rapide, peut à la fois lire et écrire des archives, et est la version encore maintenue aujourd'hui.

Exemples d'utilisation

Comparons l'approche héritée avec l'approche moderne que vous devriez réellement utiliser.

Exemple : Ouverture d'une archive Zip (API héritée)

Supposons que vous ayez un fichier d'archive zip example.zip et que vous souhaitiez l'ouvrir. Avec l'ancienne API, vous appelleriez zip_open() et vérifieriez le résultat :

Ouverture d'un fichier d'archive Zip en PHP (PHP < 8.0 uniquement)

$zip = zip_open("example.zip");

// On failure the function returns an integer error code instead of a resource.
if (is_resource($zip)) {
    echo "Archive opened successfully.";
    zip_close($zip);
} else {
    echo "Failed to open archive. Error code: " . $zip;
}

Cela tente d'ouvrir example.zip. Comme la fonction retourne une ressource en cas de succès mais un code d'erreur entier en cas d'échec, la vérification la plus sûre est is_resource(). La lecture ou l'extraction des entrées nécessite ensuite les fonctions complémentaires zip_read(), zip_entry_open() et zip_entry_read() — qui ont également toutes été supprimées dans PHP 8.0.

Exemple : L'équivalent moderne avec ZipArchive

Sur toute version PHP prise en charge (7.x et 8.x), faites la même chose avec la classe ZipArchive. ZipArchive::open() retourne true en cas de succès ou un code d'erreur en cas d'échec :

Ouverture et lecture d'une archive zip avec ZipArchive

$zip = new ZipArchive();

if ($zip->open("example.zip") === true) {
    echo "Archive opened. It contains {$zip->numFiles} file(s).\n";

    // Read the first entry's name as an example.
    if ($zip->numFiles > 0) {
        echo "First entry: " . $zip->getNameIndex(0) . "\n";
    }

    $zip->close();
} else {
    echo "Failed to open archive.\n";
}

ZipArchive regroupe les étapes d'ouverture, d'inspection et de fermeture dans un objet bien documenté, et contrairement à l'API héritée, il peut également créer et modifier des archives avec addFile() et addFromString().

Conclusion

Dans cet article, nous avons examiné la fonction héritée zip_open() — sa syntaxe, ses paramètres $flags et $error, ses valeurs de retour, et comment vérifier le résultat avec is_resource(). Comme zip_open() a été supprimée dans PHP 8.0, traitez-la comme une référence historique en lecture seule : les applications modernes doivent utiliser la classe ZipArchive pour une gestion d'archive fiable et sécurisée. Consultez également zip_read() et zip_close() pour le reste de l'API héritée.

Pratique

Pratique
Quels paramètres sont pris par la fonction 'zip_open()' en PHP ?
Quels paramètres sont pris par la fonction 'zip_open()' en PHP ?
Was this page helpful?