文章共分为两部分

1.第一部分使用PHP ZipArchive类压缩目录
2.第二部分开启php_zip.dll配置

第一部分使用PHP ZipArchive类压缩目录
调用zip()方法文件会生成zip包自动下载 根据需要将文件路径替换即可
 function zip(){$files = array(ROOT_PATH.'/public/Uploads/');//$files = array('upload/qrcode/1/1.jpg');$zipFile = ROOT_PATH.'/public/upload/download/'.date("Ymd").'/';$zipName = $zipFile.uniqid().'.zip';$zip = new \ZipArchive();if( !file_exists($zipFile) ) mkdir($zipFile, 0777, true); $res = $zip->open($zipName, \ZipArchive::OVERWRITE | \ZipArchive::CREATE);if($res){$this->compressDir($files[0],$zip);$zip->close();}if(!file_exists($zipName)){exit("无法找到文件"); //即使创建,仍有可能失败}//如果不要下载,下面这段删掉即可,如需返回压缩包下载链接,只需 return $zipName;header("Cache-Control: public");header("Content-Description: File Transfer");header('Content-disposition: attachment; filename='.basename($zipName)); //文件名header("Content-Type: application/zip"); //zip格式的header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件header('Content-Length: '. filesize($zipName)); //告诉浏览器,文件大小@readfile($zipName);exit();}function compressDir($files, $zip, $prev=''){$handler = opendir($files);$basename = basename($files);$zip->addEmptyDir($prev . '/' . $basename);while($file = readdir($handler)){$realpath = $files . '/' . $file;if(is_dir($realpath)){if($file !== '.' && $file !== '..'){$zip->addEmptyDir($prev . '/' . $basename . '/' . $file);$this->compressDir($realpath, $zip, $prev . '/' . $basename);}}else{$zip->addFile($realpath, $prev. '/' . $basename . '/' . $file);}}closedir($handler);return null;}
第二部分开启php_zip.dll配置

Windows环境:

1.首先需要从官网上下载,下载地址 https://windows.php.net/downloads/pecl/releases/zip/

2.打开官网列表后需要查找适合自己的PHP版本和系统的zip,我的PHP版本是5.5的,这里我选择的版本号是1.13.5

3.下载完后解压,把里面的php_zip.dll文件放到PHP的扩展文件夹里

扩展文件夹路径一般都是在PHP版本文件夹里的ext文件夹,譬如我的就是D:\phpStudy\PHPTutorial\php\php-7.1.13-nts\ext

4.把php_zip.dll文件放进去后,打开PHP的配置文件php.ini,添加extension=php_zip.dll,保存后,重启apache服务器

Linux环境:
1、在Linux下没有php_zip.dll这个文件(有也不会起作用的),所以需要重新编译一下php的zip模块。具体安装方法如下:

cd /usr/src

wget http://pecl.php.net/get/zip

tar -zxvf zip

cd zip-1.x.x

phpize

./configure

make

sudo make instal

其中, 在最后使用make install命令的时候,可能需要用到root的权限,所以建议使用sudo来运行。安装完之后,屏幕上会提示zip.so的位置。然后将其记录下来,如:/usr/local/lib/php/extensions/zip.so。

2、使用root权限修改php.ini(通常可能会在/usr/local/lib/文件夹下,不过视当初安装php而定,可以通过phpinfo()来查看):

增加extension = /usr/local/lib/php/extensions/zip.so,然后同样在php.ini文件中,将 zlib.output_compression = Off 改为 zlib.output_compression = On ;

3、最后别忘了重启一下Apache:apachectl restart;

这个针对php的zip模块就安装完成了,能够在php中使用ZipArchive类了。

ps:查看php.ini文件位置的方法是:

<?phpecho phpinfo();
?>

PHP使用自带的ZipArchive类,实现压缩文件目录相关推荐

  1. php php_zip.dll,PHP如何开启自带的ZipArchive类,实现压缩解压功能

    Windows环境: 打开官网列表后需要查找适合自己的PHP版本和系统的zip,我的PHP版本是5.5的,这里我选择的版本号是1.13.5 image.png 下载完后解压,把里面的php_zip.d ...

  2. 文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

    总结:                                                          使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文: ...

  3. PHP之Zip扩展,解压缩文件,ZipArchive类

    PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有 ...

  4. CodeIgniter自带的数据库类使用介绍

    为什么80%的码农都做不了架构师?>>>    在 CodeIgniter 中,使用数据库是非常频繁的事情.你可以使用框架自带的数据库类,就能便捷地进行数据库操作. 初始化数据库类 ...

  5. php ziparchive(),php的ZipArchive类用法实例

    本文实例讲述了php的ZipArchive类用法,分享给大家供大家参考.具体如下: 通常来说,php5.2开始支持ZipArchive类,php4只能使用zip函数.其实在官方实现zip类之前,已经有 ...

  6. 用dotnet自带的mail类发邮件出现的问题

    在使用dotnet自带的mail类发送邮件的时候,因为默认的smtp端口是25,如果更改了smtp的端口号,则需加上 MailMessage msg = new MailMessage(); msg. ...

  7. c++面向对象高级编程 学习二 带指针的类

    带指针的类,必须要自己写拷贝构造和赋值构造 拷贝构造:参数和类的类型一样的构造函数 赋值构造:重写操作符=,且其参数和类的类型一样 class String {public: String(const ...

  8. c++面向对象高级编程 学习一 不带指针的类

    复数类 complex 是一个不带指针的类,其声明如下: class complex {public: complex(double r=0,double i=0):re(r),im(i){} com ...

  9. java messagedigest_Java 自带的加密类MessageDigest类(加密MD5和SHA)

    转载 转载自:http://www.tuicool.com/articles/nMNVVj Java 自带的数据加密类MessageDigest(MD5或SHA加密) 说明: 在网站中,为了保护网站会 ...

最新文章

  1. 阿里云文件存储和自我管理的云解决方案的TCO比较
  2. 2017年全球光伏需求有望首次突破100吉瓦
  3. kettle优化抽取数据速度_数据异构工具介绍
  4. iOS UI_APPEARANCE_SELECTOR
  5. 几种简单的排序算法(JAVA)
  6. java springmvc mybatis mysql
  7. python 控制有线网卡_Python 使用指定的网卡发送HTTP请求的实例
  8. php使用redis存储
  9. MySQLdb操作mysql数据库的两个细节
  10. 火炬之光模型导出(Unity载入火炬之光的模型)
  11. w10自动删除文件怎么关了_绝地求生怎么删除新地图_删新沙漠地图文件办法
  12. DocumentFragment文档碎片(高效批量更新多个节点)
  13. Windows8 RP版亲手体验全过程
  14. 牛学长苹果数据管理工具
  15. matlab中如何画柱状图,matlab如何画柱状图?matlab绘制柱状图教程
  16. VMware 安装心得
  17. word中输入空格变点
  18. 公司财务笔记-岭南学院辅修
  19. PHP Startup: Unable to load dynamic library 解决办法
  20. java 如何杀线程,您如何杀死Java中的线程?

热门文章

  1. 《 计算机应用基础》模拟试卷,《计算机应用基础》模拟试卷一
  2. 基于SSM+SpringBoot+MySQL+VUE的酒店入住信息管理系统(附论文)
  3. VOLO Vision Outlooker for Visual Recognition论文分析
  4. jmeter参数传递三种方法
  5. 以太网、令牌环、FDDI、ATM、WLAN
  6. 怎么利用完成端口监听多个不同端口的socket
  7. 【嵌入式Linux】基于orangepi的官方外设开发
  8. Apache Traffic Server安装配置
  9. android 10文件权限 三星,三星Android系统文件夹全解
  10. 如何快速制作专属的电子名片?这简单的五步操作让你快速拥有