这两天要给自己的服务器做个在线升级的功能,流程就是客户端向主机发送请求,主机验证了客户端的身份后把升级包的地址和文件名发回给客户端,然后客户端把这个包写到本地的一个文件夹,最后通过解压这个文件夹覆盖本地服务器的文件完成更新。
在解压这一步的时候用的是pclzip的类库,刚看的时候感觉语法挺简单的,可是就这两三行的代码,就是死活不起作用。第一次使用pclzip,百度了好久好像都没有人出现过类似的情况啊,所以只能过来发帖求助各位大大了。
这个是我操作的一部分代码
$updatenowinfo = getremotecontent($updatehosturl); //$updatenowinfo = file_get_contents($updatehosturl); if (strstr($updatenowinfo, 'zip')){ $pathurl = file_get_contents($updatehost . '?g=System&m=Verify&a=download&f=' . $updatenowinfo); $resUrl = 'http://www.wqxiu.com'; $pathurl = $resUrl.$pathurl.$updatenowinfo; echo $pathurl; $updatedir = './Conf/logs/Temp/update'; $filepath = $updatedir.'/'.$updatenowinfo; delDirAndFile($updatedir); mkdirs($updatedir); //下载补丁 //if(getremotefile($pathurl,$updatenowinfo,$updatedir)){ $isgot = get_file($pathurl, $updatenowinfo, $updatedir); if($isgot){ $updatezip = $updatedir . '/' . $updatenowinfo; require_once('pclzip.lib.php'); $thisfolder = new PclZip('update.zip'); var_dump($updatezip); $isextract = $thisfolder->extract();
public function test2(){ require_once('pclzip.lib.php'); $archive = new PclZip('archive.zip'); $v_list = $archive->create('update.class.php,index.html'); echo $v_list; $thisfolder = new PclZip('http://www.wqxiu.com/Uploads/resource/V4.7_V4.8updatepackage.zip'); $isextract = $thisfolder->extract(); }
若只是解压的话,可以用php内置的ZipArchive
你先把这个问题解决了再说
可以直接调用linux命令unzip执行。
unzip -d path o.zip
o.zip 为压缩包
path为解压到的目录
你先把这个问题解决了再说