参考
https://blog.csdn.net/qq15577969/article/details/115733504
安装扩展
2、把解压的php_zip.dll文件放到php-5.6.27-nts/ext目录
3、在php.ini添加以下配置:
extension=php_zip.dll
4、重启Apache
程序
/**
** @name='压缩'
*/
public function zip() {
if(request()->isPost()) {
try {
//文件夹目录
$dirPath=ROOT_PATH.'/demo/';
//zip压缩包保存路径
$zipPath= ROOT_PATH."/public/update/demo.zip";
//创建zip实例
$zip=new \ZipArchive();
if($zip->open($zipPath, \ZipArchive::CREATE|\ZipArchive::OVERWRITE)=== TRUE) {
//调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
addFileToZip($zip,$dirPath,$dirPath);
//关闭处理的zip文件
$zip->close();
}
}
catch (\Exception $e) {
$this->error('压缩失败,Error:'.$e);
}
$this->success('压缩成功');
}
}
/**
* 添加文件夹里的文件到zip
* @param zip ZipArchive对象
* @param path 源文件夹路径
* @param root 源文件夹根目录
* 补充说明:第三个参数建议和第二个参数一样,因为递归会修改第二个参数的值,因此必须传第三个参数
*/
function addFileToZip($zip,$path,$root){
$handler=opendir($path); //打开当前文件夹
while(($filename=readdir($handler))!==false){
if($filename != "." && $filename != ".."){//不操作名字为'.'和'..'的文件夹或文件
if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
addFileToZip($zip,$path."/".$filename,$root);
}else{
//将文件加入zip对象,第二个参数是zip里文件的路径
$pathFilename=$path . "/" . $filename;
$zip->addFile($pathFilename, str_replace($root.'/','',$pathFilename));
}
}
}
@closedir($path);
}