[英]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.