zip_entry_filesize()
La fonction zip_entry_filesize() permettait d'obtenir la taille non compressée d'un fichier dans une archive zip en PHP.
La fonction zip_entry_filesize() était une fonction PHP intégrée qui retournait la taille non compressée (originale), en octets, d'un fichier individuel dans une archive zip. Elle fonctionnait conjointement avec l'ancienne API zip procédurale (zip_open(), zip_read() et zip_entry_open()).
zip_entry_filesize() a été dépréciée en PHP 8.0 et supprimée en PHP 8.1. Elle n'existe plus dans les versions modernes de PHP. Le nouveau code doit utiliser la classe ZipArchive à la place — cette page présente l'approche équivalente et supportée.
Signification de la « taille non compressée »
Une archive zip stocke deux tailles pour chaque entrée :
- Taille non compressée — la taille du fichier une fois extrait (ce que
zip_entry_filesize()retournait, et ce queZipArchive::statName()expose via le champsize). - Taille compressée — le nombre d'octets que l'entrée occupe réellement dans l'archive après compression. Dans l'API procédurale, il s'agissait de
zip_entry_compressedsize(); avecZipArchive, c'est le champcomp_size.
Connaître la taille non compressée à l'avance est utile pour afficher la taille de téléchargement aux utilisateurs, vérifier si l'espace disque est suffisant pour l'extraction, ou valider un fichier téléchargé avant de le décompresser.
Syntaxe historique
Pour référence, la signature originale était :
int zip_entry_filesize(resource $zip_entry)Où $zip_entry est un handle d'entrée zip retourné par zip_read(). Elle retournait la taille non compressée de l'entrée en octets. Comme cette fonction n'existe plus, ne l'utilisez pas dans du nouveau code.
Le remplacement moderne : ZipArchive::statName()
La méthode supportée pour lire la taille non compressée d'une entrée est ZipArchive::statName(), qui retourne un tableau associatif de métadonnées (ou false si l'entrée est absente). La clé size contient la taille non compressée.
$zip = new ZipArchive();
if ($zip->open('example.zip') === true) {
$stat = $zip->statName('file.txt');
if ($stat !== false) {
echo "The uncompressed size of the file is: " . $stat['size'] . " bytes.";
} else {
echo "File not found in archive.";
}
$zip->close();
} else {
echo "Failed to open archive.";
}statName() recherche une entrée par son chemin dans l'archive. Si vous n'avez qu'un index (par exemple lors d'une itération avec numFiles), utilisez statIndex() à la place — il retourne le même format de tableau.
Comparaison des tailles compressée et non compressée
Puisque le tableau stat contient les deux valeurs, vous pouvez afficher le taux de compression en un seul passage — sans appels séparés comme l'ancienne paire zip_entry_filesize() / zip_entry_compressedsize() :
$zip = new ZipArchive();
if ($zip->open('example.zip') === true) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$stat = $zip->statIndex($i);
$saved = $stat['size'] > 0
? round(100 * (1 - $stat['comp_size'] / $stat['size']))
: 0;
echo "{$stat['name']}: {$stat['size']} bytes -> {$stat['comp_size']} bytes ({$saved}% saved)\n";
}
$zip->close();
} else {
echo "Failed to open archive.";
}Pièges courants
- Vérifiez la valeur de retour.
open()retournetrueen cas de succès ou un code d'erreur (un entier) en cas d'échec, donc comparez avec=== trueet non une vérification de véracité souple.statName()retournefalsepour une entrée manquante. sizeest la valeur non compressée. Une erreur courante est de supposer qu'il s'agit de la taille sur le disque dans le zip — c'estcomp_size.- Les répertoires sont aussi des entrées. Lors d'une itération avec
statIndex(), les entrées de répertoire apparaissent avec un/final et unesizede0.
Conclusion
zip_entry_filesize() a été supprimée en PHP 8.1 et ne doit donc pas apparaître dans du nouveau code. Sa fonction — lire la taille non compressée d'une entrée — est désormais assurée par ZipArchive::statName() (ou statIndex()), dont le champ size donne la même valeur tout en exposant aussi comp_size pour la taille compressée. Consultez la vue d'ensemble de ZipArchive et filesize() pour les fonctions auxiliaires liées à la taille des fichiers.