博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP执行zip与rar解压缩方法
阅读量:5035 次
发布时间:2019-06-12

本文共 1416 字,大约阅读时间需要 4 分钟。

Zip:PclZip 

Rar:PECL rar 
以往過去要在php下執行解壓縮程序,無非最常見的方法是寫command 然後用exec()等執行函式去跑
這在Windows下或許可以,但換成Unix話會礙於帳號權限問題而無法順利執行
那有沒有那種本身就有提供函式可以直接使用而不需要去下command去跑的方法呢
答案有(話說找了好幾天才找到可以用的方法......XD)
先講Zip,由於php內建本身就有提供zip相關函式(但須先要有ziplib函式)但不是很好用
就光extract來講,內建函式只負責單純解壓縮檔案出來,而不是會按照資料夾依序解壓縮出來
這樣就失去extract的作用
而要講的 PclZip 這支,本身就有提供 extension 了,故有沒有Ziplib就沒差
且免安裝,只需要再用他時 include 進來就可以了
例如:<?php include('pclzip.lib.php'); ?> 這樣
此外在extract部分,則是會按照資料夾順序依序解壓縮出來,而並非單純解壓縮檔案出來
相關用法像這樣

() == 0) { /*解壓縮路徑跟原始檔相同路徑*/("Error : ".$archive->errorInfo());}?>

 

當然也可以指定解壓縮路徑,像這樣

(PCLZIP_OPT_PATH, 'data') { /*data換成其他路徑即可*/("Error : ".$archive->errorInfo());}?>

 

如果再寫一支自動建立目錄的script會更好,因為函式本身不會判斷壓縮檔裡第一層是檔案還是資料夾(這我想其他相關函式也做不到吧!!!)

再來是Rar,這問題比較大,由於php本身沒提供rar相關函式,所以需要求助第三方函式來用
所幸有這個 PECL(The PHP Extension Community Library)
裡面有個 rar 的 package 可以使用
不過須得手動安裝才行
若是 Unix 話,可以參考下列安裝法

fetch http://pecl.php.net/get/rar-x.x.x.tgzgunzip rar-xxx.tgztar -xvf rar-xxx.tarcd rar-xxxphpize./configure && make && make install

 

當然若是 freebsd 話,用 port 裝會更快

cd /usr/ports/archivers/pecl-rar

make
make install

 

記得安裝完後須 restart apache

安裝完後可以做測試

 

比較要注意的,若是用 port 安裝話,版本會比較新(官網只有到0.3.1,port 安裝話已經到0.3.4),所以用法上會有些出入

但extract用法上並無差異
相關用法像這樣

('/dir/extract/to/'); /*///to/換成其他路徑即可*/}rar_close($rar_file);?>

跟Zip部分一樣,若搭配自動建立目錄會更好

 

http://www.cnblogs.com/aha/archive/2010/12/02/1894825.html

转载于:https://www.cnblogs.com/guke/archive/2013/04/07/3003743.html

你可能感兴趣的文章
1363
查看>>
mysql 性能优化思路 - mysqldumpslow /tmp/mysql-slow.log 字符集 utf-8 create database
查看>>
subprocess.call(cmd, shell=True)
查看>>
主从复制报错
查看>>
java多线程快速入门(六)
查看>>
微信小程序地图总结
查看>>
第一次作业 1.8
查看>>
Java操作redis
查看>>
理解并设计rest/restful风格接口
查看>>
PHP preg_match正则表达式的使用
查看>>
Permutation Recovery
查看>>
WPF,Silverlight与XAML读书笔记第二十 - 控件之二 – 内容控件(命令控件)
查看>>
js补充之作用域
查看>>
12.4号
查看>>
安装JMeter
查看>>
虚方法与抽象方法有什么区别
查看>>
20181126-java-面试知识-收集
查看>>
POJ-3295 Tautology 枚举+DFS
查看>>
KRPano多屏互动原理
查看>>
KRPano动态热点专用素材图50多个,加动态热点使用方法
查看>>