Я использую ZipArchive, чтобы заархивировать и загрузить динамически сгенерированные PDF-файлы. Файлы создаются в указанной папке, но когда я пытаюсь загрузить zip-файл, загружается поврежденный файл размером 1 КБ.
Я попробовал этот код на своем локальном wampp, и здесь он отлично работает, и генерируется правильный файл zip, но в процессе работы загружается сломанный zip. Я полагаю, что есть некоторая переменная сервера, которая может привести к этому?
// creating directory in the server with timestamp
$dirName = strtotime(date('Y-m-d H:i:s'));
$dirPath = "/var/www/...../foldertobezipped/" . $dirName;
mkdir($dirPath);
// generating and storing the generated pdf files in the $dirPath folder
foreach ($resultArray as $filelist) {
$this->invoicepdfview($orderid);
}
// zip file name
$archive = $dirName . '.zip';
// invoking ZipArchive
$zip = new ZipArchive;
$zipPath = $dirPath . "/" . $archive;
$zip->open($zipPath, ZipArchive::CREATE);
// scanning all the files to be zipped
$files = scandir($dirPath);
// removing the unwanted key-value from the array
unset($files[0], $files[1]);
// adding files to the zip file
foreach ($files as $file) {
$new_filename = substr($dirPath . '/' . $file, strrpos($dirPath . '/' . $file, '/') + 1);
$zip->addFile($dirPath . '/' . $file, $new_filename);
}
$zip->close();
// downloading the zipped file
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zipPath);
header('Content-Length: ' . filesize($zipPath));
readfile($zipPath);
unlink($zipPath);
Я проверил и сравнил большинство переменных php.ini, которые могут повлиять на это между локальным WAMPP и рабочим сервером. Может ли кто-нибудь помочь мне в этом? Где я что-то упустил?
P.S. - Я предоставил разрешение 777 для каталога, в котором создаются файлы.