使用ZipArchive下载空/损坏的zip文件

时间:2019-07-04 13:17:29

标签: php ziparchive

我正在使用ZipArchive压缩并下载动态生成的pdf文件。这些文件正在指定的文件夹中生成,但是当我尝试下载zip文件时,正在下载1KB损坏的文件。

我已经在本地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权限。

0 个答案:

没有答案