この 2 日間で、サーバーにオンライン アップグレード機能を実装します。そのプロセスでは、クライアントがホストにリクエストを送信し、クライアントの ID を確認した後、ホストがアップグレード パッケージのアドレスとファイル名を送り返します。このパッケージはローカル フォルダーに書き込まれ、最終的にフォルダーを解凍してローカル サーバー上のファイルを上書きすることで更新が完了します。
このステップを解凍するときに、pclzip クラス ライブラリを使用しました。最初に見たとき、構文は非常に単純だと感じましたが、この 2 ~ 3 行のコードだけでは機能しませんでした。 pclzip を使用するのは初めてです。長い間 Baidu を検索しましたが、同様の状況に陥った人がいなかったので、助けを求めるためにここに投稿するしかありません。ありがとうございました。
これは私が操作したコードの一部です
$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 は解凍先のディレクトリです
まずこの問題を解決してから話し合ってください