需要用到PHP扩展之ZipArchive类
/**
* [zip_files 多文件(文件夹)压缩]
* @Author Ray
* @DateTime 2018-01-29
* @param [type] $zipName [压缩文件(文件夹)名称]
* @param [type] $files [被压缩文件(夹)名,多个用逗号分隔]
* @return [boolean] [true|false]
*/
function zip_files($zip,...$files){
//遍历文件名参数
foreach($files as $v){
//是文件则加入压缩文件
if(is_file($v)){
$zip -> addFile($v);
}
//是文件夹则遍历文件夹
if(is_dir($v)){
$handle = opendir($v);
//注意这里一定要用不全等于false,以防止文件名为'false','0'之类...
while(($res = readdir($handle))!==false){
if($res != '.' && $res != '..'){
if(is_file($v.'/'.$res)){
$zip -> addFile($v.'/'.$res);
}
if(is_dir($v.'/'.$res)){
zip_files($zip,$v.'/'.$res);
}
}
}
}
}
}
$zip = new ZipArchive;
if($zip -> open('a.zip',ZipArchive::CREATE|ZipArchive::OVERWRITE)){
zip_files($zip,'../bootstrap');
$zip -> close();
}