我正在使用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权限。