';#opendir if(function_exists('readdir')==false) $msg .= 'readdir函数不可用
';#readdir if(function_exists('copy')==false) $msg .= 'copy函数不可用
';#copy #检查php必要扩展 if(extension_loaded('Fileinfo')==false) $msg .= 'Fileinfo扩展不可用
';#Fileinfo #检测upgrade目录是否可写 if(abcefile('upgrade')) $msg .= 'upgrade目录不可写
'; echo $msg; break; //手动升级检测 case "hand": $upid = tsIntval($_GET['upid']); include template('update_hand'); break; //第一步检测可写权限 case "one": include template('update_one'); break; //第二步,升级数据库 case "two": include template('update_two'); break; case "twodo": $upsql = tsTrim($_POST['upsql']); if($upsql){ $arrSql = explode('--------------------',$upsql); foreach($arrSql as $item){ $item = tsTrim($item); if ($item){ $db->query($item); } } //执行成功 echo '1';exit; }else{ //无SQL可执行 echo '0';exit; } //echo '1';exit; break; //第三部,升级系统文件 case "three": include template('update_three'); break; case "threedo": $upversion = tsTrim($_GET['upversion']); if($upversion==''){ getJson('版本号有问题',1,0); } $filezip = $upversion.'.zip'; //先删除旧的zip升级文件 unlink('upgrade/'.$filezip); delDir('upgrade/'.$upversion); //拼接出要下载的远程文件 $upfile = 'https://www.thinksaas.cn/upgrade/'.$filezip; //第一步:多线程下载zip压缩文件 $urls=array( $upfile, $upfile, $upfile, ); $save_to='upgrade/'; $mh=curl_multi_init(); foreach($urls as $i=>$url){ //$g=$save_to.basename($url); $g = $save_to.$filezip; if(!is_file($g)){ $conn[$i]=curl_init($url); $fp[$i]=fopen($g,"w"); curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)"); curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]); curl_setopt($conn[$i],CURLOPT_HEADER ,0); curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60); curl_multi_add_handle($mh,$conn[$i]); } } do{ $n=curl_multi_exec($mh,$active); }while($active); foreach($urls as $i=>$url){ curl_multi_remove_handle($mh,$conn[$i]); curl_close($conn[$i]); fclose($fp[$i]); } curl_multi_close($mh); chmod('upgrade/'.$filezip,0755); //第二步:下载完之后开始解压覆盖原有文件 include 'thinksaas/pclzip.lib.php'; $archive = new PclZip('upgrade/'.$filezip); if ($archive->extract(PCLZIP_OPT_PATH, 'upgrade/'.$upversion,PCLZIP_OPT_REPLACE_NEWER) == 0) { getJson('升级包解压失败',1,0); }else{ unlink('upgrade/'.$filezip); } //直接循环覆盖吧 file_list('upgrade/'.$upversion); //删除目录 delDir('upgrade/'.$upversion); getJson('升级成功',1,1); break; }