Attenzione di un possibile problema nell'esempio di Adnan: Se il myarchive.zip bersaglio è all'interno della cartella sorgente, allora avete bisogno di escluderlo nel ciclo, o per eseguire l'iteratore prima di creare il file di archivio (se non esiste già). Ecco uno script revisionato che utilizza l'ultima opzione e aggiunge alcune vere caratteristiche di configurazione. Questo non dovrebbe essere usato per aggiungere a un archivio esistente.
<?php
// Config Vars
$sourcefolder = "./" ; // Default: "./"
$zipfilename = "myarchive.zip"; // Default: "myarchive.zip"
$timeout = 5000 ; // Default: 5000
// instantate an iterator (before creating the zip archive, just
// in case the zip file is created inside the source folder)
// and traverse the directory to get the file list.
$dirlist = new RecursiveDirectoryIterator($sourcefolder);
$filelist = new RecursiveIteratorIterator($dirlist);
// set script timeout value
ini_set('max_execution_time', $timeout);
// instantate object
$zip = new ZipArchive();
// create and open the archive
if ($zip->open("$zipfilename", ZipArchive::CREATE) !== TRUE) {
die ("Could not open archive");
}
// add each file in the file list to the archive
foreach ($filelist as $key=>$value) {
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
}
// close the archive
$zip->close();
echo "Archive ". $zipfilename . " created successfully.";
// And provide download link ?>
<a href="http:<?php echo $zipfilename;?>" target="_blank">
Download <?php echo $zipfilename?></a>
codice grande ... come posso modificare questo in ZIP una cartella nidificata escludendo tutte le cartelle che portano ad esso? la mia cartella desiderata è disponibile in "/var/www/vhosts/mysite.com/dev/wp-content/themes/mytheme/". quando eseguo questo script ottengo una cartella iniziale di var poi www vhosts then mysite.com ecc. cosa mi manca? –
Ho capito bene che il codice itera anche attraverso "." e ".." le directory all'interno di "temi /"? Sembra che questo causi problemi quando tenti di decomprimere l'archivio. – Tamara
questo codice causa problemi durante la decompressione del file. –