搜索

查看: 3131|回复: 11

[PHP] php ZipArchive解压缩实现后台管理升级问题详解

[复制链接]
发表于 2023-5-4 17:05:59 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:05:59 3131 11 看全部
目录
  • 项目说明
  • 程序包上传
  • layui表单&上传组件
  • layui上传脚本
  • 后台解压核心代码
  • 返回友好提示功能
    项目说明
    开发php项目管理系统,由于是新项目且已经部署在生产环境,导致需要根据实际使用情况,进行及时的功能升级或bug修复。
  • 每次升级,进行程序打包,然后通过FTP上传覆盖;
  • 后期因服务器转为内网,无法通过外网访问,导致每次都需要和管理员进行升级对接。一是沟通成本较大,二是升级效率很低,无法解决及时需求。
  • 基于上面原因,采用简单的压缩升级,暂时不涉及mysql数据库的升级需求;
    程序包上传

    2022121509143215.png

    2022121509143215.png


    layui表单&上传组件
                
                   
                        系统升级
                        
                            
                                程序包
                               
                                上传压缩包
                                 确定升级
                                * 支持.zip、.rar、.gz格式压缩包
                            
                        
                   
                

    layui上传脚本
  • 安全考虑,增加上传upToken,防止非页面上传,上传漏洞;
  • 配置上传文件类型zip|rar|gz;
  • 上传后自动填写文件地址 $(“#zip_url”).val(res.imgUrl);
    //上传压缩包;
            var loadingIndex;
            upload.render({
                elem: '#uploadImg'
                , url: '?m=Zip&a=zipDeal&act=upImg&token='+upToken
                , multiple: false
                , size: 102400
                , accept: 'file'
                , exts: 'zip|rar|gz'
                , number: 1
                , before: function (obj) {
                    //console.log(obj);
                    loadingIndex = layer.load();
                }
                , done: function (res) {
                    layer.close(loadingIndex);
                    if (res.code == 1) {
                        layer.msg(res.msg);
                    }else{
                        $("#zip_url").val(res.imgUrl);
                    }
                }
            });

    后台解压核心代码
  • 设置解压为根目录$dest = “./”;
  • 判断服务器是否支持extension_loaded(“zip”)服务;
  • 调用解压函数 unzip($zip_url, $dest);
  • 删除上传程序包 unlink($zip_url);
    //读取信息;
        case "update";
            $zip_url = $_POST['zip_url'];
            //压缩包解压;
            if (extension_loaded("zip")) {
                $dest = "./";
                /*解压缩操作*/
                unzip($zip_url, $dest);
                unlink($zip_url);
                $res['code'] = "1";
                $res['msg'] = "解压完毕,目录已覆盖升级";
                die(json_encode_lockdata($res));
            } else {
                $res['code'] = "0";
                $res['msg'] = "请在php.ini中开启php_zip.dll";
                die(json_encode_lockdata($res));
            }
            break;

    返回友好提示功能
    form.on('submit(save)', function () {
                $.ajax({
                    type: "post",
                    url: "?m=Zip&a=zipDeal&act=update",
                    async: true,
                    data: {
                        zip_url: $('#zip_url').val()
                    },
                    dataType: "json",
                    success: function (res) {
                        if (res.code == 0) {
                            layer.msg(res.msg, {icon: 1,time: 2000});
                        } else {
                            layer.msg(res.msg, {icon: 1,time: 2000}, function () {
                                location.reload();
                            });
                        }
                    }
                });
                return false;
            });
    function unzip($zipName, $dest)
    {
        //检测要解压压缩包是否存在
        if (!is_file($zipName)) {
            die("解压文件不存在,请确认压缩文件");
        }
        //检测目标路径是否存在
        if (!is_dir($dest)) {
            mkdir($dest, 0777, true);
        }
        $zip = new ZipArchive();
        if ($zip->open($zipName)) {
            $zip->extractTo($dest);
            $zip->close();
            return true;
        } else {
            return false;
        }
    }
    到此这篇关于php ZipArchive解压缩实现后台管理升级问题详解的文章就介绍到这了,更多相关php ZipArchive内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-29 05:02:22 | 显示全部楼层
    123456809 2023-6-29 05:02:22 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 19:21:52 | 显示全部楼层
    井底燕雀傥 2023-6-29 19:21:52 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 23:08:06 | 显示全部楼层
    哈哈SE7 2023-6-29 23:08:06 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 23:25:16 | 显示全部楼层
    啤酒瓶空了缓 2023-6-29 23:25:16 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-30 16:07:47 | 显示全部楼层
    丁侦球 2023-6-30 16:07:47 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-7-1 00:51:57 | 显示全部楼层
    Gordon520 2023-7-1 00:51:57 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-7-3 06:47:00 | 显示全部楼层
    掌舵的鱼1987 2023-7-3 06:47:00 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    发表于 2023-7-3 17:36:45 | 显示全部楼层
    123456868 2023-7-3 17:36:45 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-5 15:45:18 | 显示全部楼层
    戏做顿 2023-7-5 15:45:18 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表