[英]PHP ZipArchive limited to 10mb
我有一个项目,用户可以在其中将多个文件添加到购物车,然后将它们压缩为一个文件,然后一次下载所有文件。
看来,一旦购物车变得更大然后10mb,它就无法创建zip文件。 我以为这可能是由于upload_max_filesize引起的,但是对于post_max_size来说设置为200m。
有什么限制呢?
这是我的代码。 它创建一个随机文件名,然后检查购物车循环并添加每个文件。
// create object
$zip = new ZipArchive();
$filename = "loggedin/user_files/ABX-DOWNLOAD-".rand(1, 1000000).".zip";
while (file_exists($filename)):
$filename = "loggedin/user_files/ABX-DOWNLOAD-".rand(1, 1000000).".zip";
endwhile;
// open archive
if ($zip->open('../'.$filename, ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive");
}
// add files
//echo $all_audio;
foreach($audio_ids as $audio_id){
if($audio_id != ""){
$audio = Audio::find_by_id($audio_id);
$selected_category = Categories::find_by_id($audio->category_id);
$selected_sub_category = Sub_Categories::find_by_id($audio->sub_category_id);
$selected_sub_sub_category = Sub_Sub_Categories::find_by_id($audio->sub_sub_category_id);
$f = "uploads/mp3/".$selected_category->category_name."/".$selected_sub_category->sub_category_name."/".$selected_sub_sub_category->sub_sub_category_name."/".$audio->media_path;
$zip->addFile($f) or die ("ERROR: Could not add file: $f");
}
}
// close and save archive
$zip->close() or die("ERROR: COULD NOT CLOSE");
}
如果归档文件是在内存中创建的,则可以通过PHP.ini或其他方式增加PHP的内存限制,或者在创建文件时将文件直接写入磁盘。
您还可以在创建文件时将文件流式传输给用户。 查看php渲染大型zip文件-达到内存限制
您是否正在使用addFile()
方法?
如果是这样,请尝试使用addFromString()
+ file_get_contents()
替换该调用。
好吧,缩小范围。 路径名已损坏,由于文件不存在,导致出现zip错误。 看来我需要一些更好的错误检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.