I create a set of HTML, CSS and image files, and I use ZipArchive to compress them into a zip file. I have confirmed that the generated assets are valid, but when I try to fasten a set of files, the resulting archive file cannot be opened.
I get no errors in PHP, and when I echo $zip->close() , it returns true, which I suppose means that it was able to write and save the file without any problems. Opening zip with the Mac Archive Utility gives this error:
βUnable to deployβ filename.zip βtoβ Downloads. β(Error 21 is a directory.)
What could be wrong here?
Here is the whole PHP script:
<?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; ?>
source share