Я пытаюсь создать и загрузить CSV-файлы в zip-файл, используя php. Zip-файл успешно загружается в папку экспорта в каталоге моего веб-сайта, однако загрузка на стороне клиента через браузер содержит ошибки
An error occured while loading the archive - There was an error while extracting "abc.zip" .. it is not an archive
Я заметил, что zip-файл, загруженный в каталог моего веб-сайта в папке экспорта, кажется, имеет значок блокировки на нем (Debian) владелец www-data .. может ли это быть проблемой, если да, как я могу изменить владельца на например -sa- каждый раз, когда файл загружается в каталог моего сайта
function export1($p){
for($i=0;$i<count($p);$i++){
$outgoing = array();
$full_export_columns = array();
$full_export_rows = array();
$for_export_columns = array();
$full_export_columns[] = $for_export_columns;
while($row=mysqli_fetch_array($p[$i]['results'], MYSQLI_BOTH)){
$for_export_rows = array();
for($y=0;$y< $p[$i]['field_count'];$y++){
$for_export_rows[] = $row[$y];
}
$full_export_rows[] = $for_export_rows;
}
$outgoing[] = $full_export_columns;
$outgoing[] = $full_export_rows;
return $outgoing;
}
}
function bulk_export_zip($incoming){
date_default_timezone_set("Asia/Kolkata");
ini_set('display_errors', true);
$date = new DateTime();
$date_time = $date->format('Y_m_d_H_i');
$conn = $incoming['conn'];
$export_queries_array = $incoming['export_queries_array'];
$item_names_str = $incoming['export_queries_names_str'];
$item_names_arr = $incoming['export_queries_names_arr'];
$zip = new ZipArchive;
$querys = $export_queries_array;
$dump_label = "test";
$files = array();
$path = "../private/exports/";
for($x = 0;$x < count($querys);$x++){
$q = $querys[$x];
$n = $item_names_arr[$x];
$sql = $q;
$query = mysqli_query($conn,$sql);
$d1[0]["results"]= $query;
$d1[0]["field_count"] = $d1[0]["results"]->field_count;
$d1 = $this->export1($d1);
$a = $d1[0][0];
$b = $d1[1];
$c = $n;
$filename = $path.$c.".csv";
$fp = fopen($filename, 'w');
for($z = 0; $z < count($b); $z++){
fputcsv($fp, $b[$z]);
}
fclose($fp);
$files[$x] = $filename;
}
$zipname = $path.$item_names_str.".zip";
$item_names_str_comma_replaced = str_replace(",", "_", $item_names_str);
$zipname2 = $item_names_str_comma_replaced.".zip";
if(!file_exists($zipname)){
$zip->open($zipname, ZipArchive::CREATE);
}else{
$zip->open($zipname, ZipArchive::OVERWRITE);
}
foreach ($files as $file) {
if(file_exists($file)){
$zip->addFile($file);
}
else{
echo"file does not exist";
exit();
}
}
$zip->close();
//doest work -- exec("chmod -R 755 /var/www/private/exports");
//doest work -- exec("chown -R sa:sa /var/www/private/exports");
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename='.$zipname2);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
}