柔晶美网络工作室

柔晶美网络工作室,倾心于web技术的博客站点

关注我 微信公众号

您现在的位置是: 首页 > 博客日记

php在线升级程序的方法

2019-10-12 admin php  2038

思路:在程序目录中放一个php文件存入版本号,在远程服务器updata目录存入升级包。后台点升级,程序开始判断是否版本一致,如果不同,则下载远程服务器上的升级包,解压后覆盖本地服务器上文件后,修改版本号,升级结束。php脚本如下:

/**
更新方法:远程服务器上upload目录存放最新的升级包,根据web目录存放并压缩为upload.zip,升级过程中会将这个压缩包下载到down目录,然后解压,复制替换相应文件。最后修改版本号。
**/
include('../inc/conn.php'); 
session_start(); 
//检测是否登录,若没登录则转向登录界面 
if(($_SESSION['userid'])!=1){ header("Location:login.php"); exit(); }?>



    
    
    
    
    在线升级
    
    
    
    
    
    
 

    在线升级 
  

本机的程序版本为: 

 $filename,         'save_path' => $save_dir . $filename     ); }      //复制文件夹内所有文件函数 function xCopy($source, $destination, $child){       //用法:       // xCopy("feiy","feiy2",1):拷贝feiy下的文件到 feiy2,包括子目录 // xCopy("feiy","feiy2",0):拷贝feiy下的文件到 feiy2,不包括子目录  if(!is_dir($source)){ echo("Error:the $source is not a direction!"); return 0; }  if(!is_dir($destination)){ mkdir($destination,0777); } $handle=dir($source); while($entry=$handle->read()){  if(($entry!=".")&&($entry!="..")){  if(is_dir($source."/".$entry)){  if($child) xCopy($source."/".$entry,$destination."/".$entry,$child);      }else{ copy($source."/".$entry,$destination."/".$entry);     }  }  } return 1;     }      //删除文件夹下所有文件函数,使用方法:调用函数,传入路径deldir($path); function deldir($path){    //如果是目录则继续    if(is_dir($path)){     //扫描一个文件夹内的所有文件夹和文件并返回数组    $p = scandir($path);    foreach($p as $val){     //排除目录中的.和..     if($val !="." && $val !=".."){      //如果是目录则递归子目录,继续操作      if(is_dir($path.$val)){       //子目录中操作删除文件夹和文件       deldir($path.$val.'/');       //目录清空后删除空文件夹       @rmdir($path.$val.'/');      }else{       //如果是文件直接删除       unlink($path.$val);      }     }    }   }   }     //比较版本号     $fwqwz = 'https://cx.dzbfsj.com/admin-kzh/version.php';      $fwqbb = file_get_contents($fwqwz);//获取服务器版本号    echo '

服务器最新版本为: '.$fwqbb.'

';     if ($bdbb==$fwqbb){    echo '

目前已是最新版本!

';    }else{    echo '

已有新版本,开始自动更新:


';         //下载升级包    $url = "https://cx.dzbfsj.com/admin-kzh/upload/upload.zip";    $save_dir = "down";    $filename = "upload.zip";    deldir('./down');//删除解压后存入的文件夹内所有文件,防止重名无法解压。    $res = getFile($url, $save_dir, $filename, 1);  //Array ( [file_name] => upload.zip [save_path] => down/upload.zip )    $filename = $res['file_name'];//文件名 upload.zip    $zipfile = $res['save_path'];//路径 down/upload.zip    echo '远程下载成功,开始解压升级包……
';   //解压文件    require_once('pclzip.lib.php');      $zip = new PclZip($zipfile);//压缩文件的路径      if ($zip->extract(PCLZIP_OPT_PATH, './down') == 0) {         die("解压失败 : ".$archive->errorInfo(true));      }else{     echo '解压成功,开始升级系统!
';     unlink($zipfile);//删除升级包     xCopy("./down","../",1);//拷贝down下的文件到网站根目录,包括子目录  $myfile = fopen("version.php", "w") or die("down文件夹无法写入!");//修改版本号 fwrite($myfile, $fwqbb); fclose($myfile);      echo '升级成功!
';      }    }


文章评论


需要 登录 才能发表评论
热门评论
0条评论

暂时没有评论!