php在线升级程序的方法
2019-10-12 admin php 2083
思路:在程序目录中放一个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 '升级成功!
'; } }
文章评论