文章共分为两部分

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. Swift 中的内存管理详解
  2. 白话科普,10s 了解 API
  3. Xshell配置ssh免密码登录-密钥公钥(Public key)
  4. Eclipse的Mockito模板
  5. sqlserver 递归查询
  6. Spring Boot 9-FreeMarker模板引擎
  7. Reachability
  8. 【bzoj4542】[Hnoi2016]大数 莫队算法
  9. swiper vue 初始化方法_详解swiper在vue中的应用(以3.0为例)
  10. windows连接linux
  11. 微积分学基本定理简介
  12. 【平面设计基础】03:绘制—图标到底有多重要
  13. 用计算机运算符编写检索式,在计算机检索中,常用的布尔逻辑算符有哪几种
  14. android手机控制家用电器,手机遥控电脑!教你用手机控制家里电脑
  15. 聊一聊为什么在浏览器输入http://localhos8080会出现tomcat后台服务器的界面
  16. Excel批量选中表格中所有图片
  17. EMIS系统理论及简单理解(后续持续添加)
  18. centos系统安装中文字体几种方法
  19. 搞懂Python切片中start、end、steps正负的区别
  20. 捷联惯导算法(二)位置更新算法的理解

热门文章

  1. 04-前端技术_CSS与CSS3美化页面
  2. 湖南计算机考试模拟程序,湖南省计算机等级考试模拟 试卷5
  3. 四分之一车辆垂向动力学模型
  4. Tomcat 6数据源的配置
  5. 自从学会Python后,无视百度文库VIP,所有文档免费下载阅读
  6. Window Installer Clean Up好用的软件管理工具
  7. Visual Studio 2010 sp1 在线升级包
  8. poj3666序列对应——DP
  9. Hdu 3666(差分约束系统)
  10. IMX6ULL SPI