Extraire des fichiers ZIP avec PHP
Lorsque vous essayez de décompresser un fichier à l'aide de PHP, vous pouvez rencontrer des difficultés lors de la transmission du nom du fichier via une URL comme on le voit dans votre code :
<?php $master = $_GET["master"]; system('unzip $master.zip'); // Incorrect syntax ?>
Corriger le Syntaxe
Le principal problème réside dans la syntaxe de l'appel system(). La syntaxe correcte est d'appeler la commande système comme ceci :
system("unzip $master.zip");
Utilisation des fonctions PHP intégrées
Bien que la fonction system() puisse accomplir la tâche, ce n'est généralement pas recommandé. PHP fournit des extensions intégrées pour gérer les fichiers compressés, telles que ZipArchive. Voici un exemple d'utilisation de ZipArchive :
<?php $zip = new ZipArchive; $res = $zip->open('file.zip'); if ($res === TRUE) { $zip->extractTo('/myzips/extract_path/'); $zip->close(); echo 'Extraction successful!'; } else { echo 'Extraction failed: ' . $zip->getStatusString(); } ?>
Considérations supplémentaires
Solution d'extraction vers le répertoire actuel
Pour extraire le fichier ZIP dans le même répertoire où il réside, vous pouvez déterminer le chemin absolu vers le fichier et spécifiez-le comme cible d'extraction :
<?php $file = 'file.zip'; $path = pathinfo(realpath($file), PATHINFO_DIRNAME); $zip = new ZipArchive; $res = $zip->open($file); if ($res === TRUE) { $zip->extractTo($path); $zip->close(); echo "Extraction complete!"; } else { echo "Extraction failed: " . $zip->getStatusString(); } ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!