php执行zip压缩,PHP执行zip与rar解压缩方法实现代码

Zip:PclZip http://www.phpconcept.net/pclzip/index.en.php

Rar:PECL rar http://pecl.php.net/package/rar

以往过去要在php下执行解压缩程序,无非最常见的方法是写command 然后用exec()等执行函式去跑

这在Windows下或许可以,但换成Unix话会碍于帐号权限问题而无法顺利执行

那有没有那种本身就有提供函式可以直接使用而不需要去下command去跑的方法呢

答桉有(话说找了好几天才找到可以用的方法......XD)

先讲Zip,由于php内建本身就有提供zip相关函式(但须先要有ziplib函式)但不是很好用

就光extract来讲,内建函式只负责单纯解压缩档桉出来,而不是会按照资料夹依序解压缩出来

这样就失去extract的作用

而要讲的 PclZip 这支,本身就有提供 extension 了,故有没有Ziplib就没差

且免安装,只需要再用他时 include 进来就可以了

例如:<?php include('pclzip.lib.php'); ?> 这样

此外在extract部分,则是会按照资料夹顺序依序解压缩出来,而并非单纯解压缩档桉出来

相关用法像这样

复制代码代码如下:

require_once('pclzip.lib.php');

$archive = new PclZip('archive.zip');

if ($archive->extract() == 0) { /*解压缩路径跟原始档相同路径*/

die("Error : ".$archive->errorInfo(true));

}

?>

当然也可以指定解压缩路径,像这样

复制代码代码如下:

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

安装完后可以做测试

复制代码代码如下:

$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用法上并无差异

相关用法像这样

复制代码代码如下:

$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部分一样,若搭配自动建立目录会更好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 当前目录_virtualenvwrapper打造多版本Python环境

前言面对多个 Python 开发项目时&#xff0c;需要针对不同的项目创建相应的开发环境。通常情况下&#xff0c;使用 virtualenv 创建一个虚拟的独立 Python 环境&#xff0c;但是 virtualenv 创建的环境相对分散不便于管理。这里推荐使用 virtualenvwrapper 来创建集中的便于管理…

oracle装了客户端怎么登陆账号,分享Oracle 11G Client 客户端安装步骤(图文详解)...

Oracle 11G Client 客户端安装步骤&#xff0c;具体如下&#xff1a;下载地址&#xff1a;http://www.gimoo.net/database/167737.html先将下载下来的ZIP文件解压&#xff0c;并运行setup.exe文件。执行到第四步之后&#xff0c;出现错误&#xff0c;直接点全部忽略就可以了。把…

python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)

【python】python vs Excel ( 与mysql数据库之间的交互) 通过python与mysql数据库做交互 到目前为止大部分案例的演示数据都是基于文件进行读取的。那么python如何跟数据库之间做交互才是未来我们真正需要关心的。因为我们的数据最终还是要存储到数据库中去的。 python与数据库…

基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1&#xff0e;摘要&#xff1a;汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位、字符分割和字符识别三个主要部分。本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照…

python删除第一行_Python删除文件第一行

一、代码实例&#xff1a; def del_firstline(): for line in fileinput.input("file.txt", inplace 1): if not fileinput.isfirstline(): print(fileinput.replace("\n", "")) 二、使用的库&#xff1a;fileinput fileinput模块提供处理一个或…

weblogic 11g 配置oracle数据源 数据库驱动选哪个,weblogic11g配置db2数据源驱动有关问题...

weblogic11g配置db2数据源驱动问题今天在weblogic10.33上配置db2 9.7数据源&#xff0c;采用type4方式连接&#xff0c;驱动选择weblogic db2 type4驱动&#xff0c;配置成功后&#xff0c;开启应用测试&#xff0c;发现对元数据的获取存在问题&#xff0c;比如说通过 select *…

python英文词云代码_使用python实现个性化词云的方法

先上图片词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy pip install matplotlib 因为用ubuntu系统所有没有windows那么麻烦&#xff0c;也没有那么多报错 看到好多人制作自己的词云有没…

php 打开pdf文件附件,pdf里怎么链接到附件

首先试试修改config.inc.php 里的cookie前缀&#xff0c;随便改个试试&#xff0c;例如&#xff1a;$cookiepre FR4_; // cookie 前缀不行的话试试下面的&#xff0c;attachment.php找到function getlocalfile($filename, $readmod 1, $range 0) { if($readmod 1 || $readm…

python numpy库作用_python Numpy库

一.导入库 import numpy as np 二.创建 1.numpy中只有一种数据类型&#xff1a;ndarray,表示n维数组 创建ndarray数组&#xff1a; -由列表或者元组类型创建数组 -有元组类型创建数组 -创建特殊数组 2.采用np.array函数来创建&#xff0c;语法为&#xff1a; np.array(列表或元…

oracle 关闭如何启动,ORACLE启动和关闭实例

实例启动和关闭&#xff1a;一.数据库启动的几种状态(1)SQL>startup 启动的过程&#xff1a;a. 例程启动b. 数据库加载c. 数据库打开(2)SQL>startup nomount例程启动阶段所有做的工作&#xff1a;a. 按以下顺序读取初始化参数文件&#xff1a;首先读取 spfileSID.ora &am…

python文本解析_如何通过python进行文本解析?

我希望使用python解析数据&#xff0c;以便将其导入Excel电子表格中。我需要一些帮助来实现过程的自动化。文件内容包括&#xff1a;ok: [wrt02.test1] > { "msg": "nxos" } TASK [checklist : OUTPUT IOS_XR] ***************************************…

linux监测node进程,通过node_exporter监控linux服务器一

前言&#xff1a;node_exporter用于监控*nux系统&#xff0c;使用go编写的收集器prometheus服务器&#xff1a;192.168.199.222监控服务器 192.168.199.221在192.168.199.221下载node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v*/node_exp…

k8s 离线安装_阿里开源 k8s 事件通知服务

背景在 Kubernetes 开源生态中&#xff0c;资源监控有 metrics-server、Prometheus等&#xff0c;但这些监控并不能实时推送 Kubernetes 事件&#xff0c;监控准确性也不足。当 kubernetes 集群中发生 Pod因为 OOM 、拉取不到镜像、健康检查不通过等错误导致重启&#xff0c;集…

kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!

bugku加密&#xff01;安排本文持续更新1 摩斯密码2 栅栏密码3 Ook密码4 brain密码5 easycrypto密码6 base647 散乱的密文8 凯撒密码9 一段base6410 &#xff01;&#xff1f;11 []-12 奇怪的密码--凯撒变式13 托马斯杰斐逊--转轮加密14 伪加密15 告诉你个秘密16 这不是MD517 贝…

python元组类型_Python数据类型之元组

导语&#xff1a;元组介绍访问元组修改元组删除元组元组运算符元组内置函数 元组介绍 与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号&#xff0c;列表使用方括号。 元组的创建&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 实…

linux命令 重定向%3e,linux输出信息调试信息重定向

在运行linux的时候有所有的调试信息可以分为三个部分1、bootloader输出信息U-Boot 1.3.2(Nov 19 2016 - 22:02:08)DRAM: 64 MBFlash: 512 kBNAND: 64 MiBIn: serialOut: serialErr: serialHit any key to stop autoboot: 0[yqliu2410 #] tftpFound DM9000 ID:90000a46 at addre…

360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”

0x00 寻找突破口打开首页,emm就一个登录页面,没了随便写点东西提交看看天生手欠的我一不小心就多输了一个单引号WDNMD,除了数字和字母其他都不行?这叫我怎么测?刚刚要放弃,就在这时,首页的一个二维码吸引了我正是安卓端的软件,眼前一亮,仿佛找到了打开新世界的大门开开心心地…

linux内核中测量时间的方法,Linux内核中获取时间函数do_gettimeofday

内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统的 uptime. 如所示, 驱动可以使用 jiffies 的当前值来计算事件之间的时间间隔(例如, 在输入驱动中从单击中区…

python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...

目录一、三元表达式二、函数递归 递归调用的定义递归分为两个阶段&#xff1a;递归&#xff0c;回溯三、匿名函数 什么是匿名函数&#xff1f;有名字的函数与匿名函数的对比lambda匿名函数的应用四、内置函数 #注意&#xff1a;内置函数id()可以返回一个对象的身份&#xff0c;…

linux 内核空间占用cpu百分比过高,linux下分析java程序占用CPU、内存过高

一、CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分&#xff0c;一部分为系统内核空间占用CPU百分比&#xff0c;一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低&#xff0c;说明CPU占用率越高。2)…