Sto generando un insieme di file HTML, CSS e di immagini e sto utilizzando ZipArchive per comprimerli in un file zip. Ho confermato che gli asset generati sono validi, ma quando tento di comprimere il set di file, il file di archivio risultante non può essere aperto.Problema di ZipArchive "Errore 21 - È una directory" in PHP
Non ricevo alcun errore nel PHP e quando I echo $zip->close()
restituisce true che presumo significhi che è stato in grado di scrivere e salvare il file senza problemi. L'apertura del file zip con l'utilità di archiviazione mac genera questo errore:
"Unable to expand "filename.zip" into "Downloads". (Error 21 - Is a directory.)
Cosa potrebbe esserci di sbagliato?
Qui è l'intero script PHP:
<?php
$ref = $_SERVER["HTTP_REFERER"];
$html = $_REQUEST['html'];
$images = $_REQUEST['images'];
$folder = uniqid();
$prepped = str_replace($ref.'server/php/files/', 'images/', $html);
mkdir("./runways/$folder", 0777);
mkdir("./runways/$folder/images", 0777);
mkdir("./runways/$folder/css", 0777);
file_put_contents('./runways/'.$folder.'/index.html',$prepped);
copy('../../css/runway.css', './runways/'.$folder.'/css/runway.css');
foreach($images as $image) {
$i = urldecode(str_replace($ref.'server/php/files/', '', $image));
$idata = file_get_contents('./files/'.$i);
file_put_contents('./runways/'.$folder.'/images/'.$i, $idata);
}
//echo $ref.'server/php/runways/'.$folder.'/';
$sourcefolder = './runways/'.$folder.'/';
$zipfilename = $folder.'.zip';
$dirlist = new RecursiveDirectoryIterator($sourcefolder);
$filelist = new RecursiveIteratorIterator($dirlist);
ini_set('max_execution_time', 5000);
$zip = new ZipArchive();
if ($zip->open('./zips/'.$zipfilename, ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive");
}
foreach ($filelist as $key=>$value) {
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
}
$zip->close();
echo $ref.'server/php/zips/'.$zipfilename;
?>