我有一个程序,可以让我选择要下载的文件。选择文件后,将文件放入zip文件中并下载zip文件。在大约500MB的某个大小之后,我收到一个内部服务器错误,但是对于不那么大的大小它没有问题。
我已经将memory_limit设置为4096MB,将max_execution_time设置为3600。display_errors也已启用,但未显示任何内容。 error_log也为空。
$zip = new ZipArchive();
$zip_name = "generated_zips/".time().".zip";
$zip->open($zip_name, ZipArchive::CREATE);
foreach ($file_ids as $file) {
if ($file != ""){
$db_file = get_file($file);
if($db_file['isTiff']==1){
$path = $db_file['file_dir_tiff'];
}
else{
$path = $db_file['file_dir'];
}
$zip->addFromString(basename($path), file_get_contents($path));
$zip->renameName(basename($path), $db_file['fileName']);
}
}
$zip->close();
if (file_exists($zip_name)) {
header('Content-Description: File Transfer');
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=$zip_name');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($zip_name));
readfile($zip_name);
ob_clean();
ob_end_flush();
unlink($zip_name);
exit;
}