Пустой / испорченный zip-файл загружается с помощью ZipArchive - PullRequest
0 голосов
/ 04 июля 2019

Я использую 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 для каталога, в котором создаются файлы.

...