PHP执行zip与rar解压缩方法
时间:2010-12-02 来源:白乌鸦
<?php require_once('pclzip.lib.php'); $archive = new PclZip('archive.zip'); if ($archive->extract() == 0) { /*解壓縮路徑跟原始檔相同路徑*/ die("Error : ".$archive->errorInfo(true)); } ?>
當然也可以指定解壓縮路徑,像這樣
<?php include('pclzip.lib.php'); $archive = new PclZip('archive.zip'); if ($archive->extract(PCLZIP_OPT_PATH, 'data') { /*data換成其他路徑即可*/ die("Error : ".$archive->errorInfo(true)); } ?>
如果再寫一支自動建立目錄的script會更好,因為函式本身不會判斷壓縮檔裡第一層是檔案還是資料夾(這我想其他相關函式也做不到吧!!!)
再來是Rar,這問題比較大,由於php本身沒提供rar相關函式,所以需要求助第三方函式來用
所幸有這個 PECL(The PHP Extension Community Library)
裡面有個 rar 的 package 可以使用
不過須得手動安裝才行
若是 Unix 話,可以參考下列安裝法
fetch http://pecl.php.net/get/rar-x.x.x.tgz gunzip rar-xxx.tgz tar -xvf rar-xxx.tar cd rar-xxx phpize ./configure && make && make install
當然若是 freebsd 話,用 port 裝會更快
cd /usr/ports/archivers/pecl-rar
make
make install
記得安裝完後須 restart apache
安裝完後可以做測試
<?php $rar_file = rar_open('example.rar') or die("Failed to open Rar archive"); /*example.rar換成其他檔案即可*/ $entries_list = rar_list($rar_file); print_r($entries_list); ?>
比較要注意的,若是用 port 安裝話,版本會比較新(官網只有到0.3.1,port 安裝話已經到0.3.4),所以用法上會有些出入
但extract用法上並無差異
相關用法像這樣
<?php $rar_file = rar_open('example.rar') or die("Can't open Rar archive"); /*example.rar換成其他檔案即可*/ $entries = rar_list($rar_file); foreach ($entries as $entry) { $entry->extract('/dir/extract/to/'); /*/dir/extract/to/換成其他路徑即可*/ } rar_close($rar_file); ?>
跟Zip部分一樣,若搭配自動建立目錄會更好
相关阅读 更多 +