Bir dizi HTML, CSS ve görüntü dosyaları oluşturuyorum ve bir zip dosyasına sıkıştırmak için ZipArchive kullanıyorum. Üretilen varlıkların geçerli olduğunu doğruladım, ancak dosya kümesini sıkıştırmaya çalıştığımda, sonuçta ortaya çıkan arşiv dosyası açılamıyor.ZipArchive issue "Hata 21 - Bir Dizin" PHP
PHP'de herhangi bir hata alıyorum ve echo $zip->close()
ne zaman döndürdüğümü doğru olarak yazabileceğini ve dosyayı sorunsuz bir şekilde kaydedebildiğini varsayar. Arşivleme Yardımcı Programı ile zip açmak bu hatayı atar:
"Unable to expand "filename.zip" into "Downloads". (Error 21 - Is a directory.)
Burada yanlış olan ne olabilir?
<?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;
?>