php压缩包 加密,php加密压缩文件

本文介绍了使用PHP的ZipArchive模块对文件进行压缩和加密的过程,强调了PHP 7.2以下版本不支持加密的问题,并提供了设置密码和加密文件的方法。在压缩过程中,文件的原始目录结构会被保留,如果需要自定义目录结构,可以通过指定路径实现。文章还提醒开发者注意在编译PHP时启用zip模块和加密功能。
摘要由CSDN通过智能技术生成

前言

近几日,用爬虫采集的了一些数据,存放到硬盘中,随着数据量越来越多,所以想上传到网盘当中,可是不加下密又觉得不放心,

所以开始用PHP的zip模块进行压缩加密.

开始

$zipArc = new \ZipArchive();

if ($zipArc->open('/home/test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE) === true) {

//设置密码 注意此处不是加密,仅仅是设置密码

if (!$zipArc->setPassword('password')) {

throw new RuntimeException('Set password failed');

}

//往压缩包内添加文件

$zipArc->addFile('/home/test.png', '1/test.png');

//加密文件 此处文件名及路径是压缩包内的

if (!$zipArc->setEncryptionName('1/test.png', ZipArchive::EM_AES_256)) {

throw new RuntimeException('Set encryption failed');

}

}

$zipArc->close();

注意事项

1 PHP7.2以下不支持加密

php7.2 以下是不支持加密的,我们看一下php官方文档中的解释

从PHP 7.2.0和libzip 1.2.0开始,密码用于解压缩归档,也是ZipArchive :: setEncryptionName() 和ZipArchive :: setEncryptionIndex()的默认密码。

以前,此功能仅设置用于解压缩存档的密码; 它没有将非密码保护的ZipArchive 变成受密码保护的ZipArchive。

也就是说php7.2之前,setPassword(‘password‘)这个方法仅仅是设置setEncryptionName()和setEncryptionIndex()的默认密码,却没有进行加密操作!!!,就问你坑不坑!!

2 方法找不到

提示没有setEncryptionName和setEncryptionIndex方法时,请编译时zip模块时用以下参数

--with-libzip

--enable-zip

3 目录结构问题

待压缩的文件目录,比说说是/home/test/a.png

压缩后,你发现压缩包内的目录结构是/home/test/a.png,

也就是说压缩包原封不动的保持了原来文件的目录.可是我们想自定义压缩包目录怎么办呢?

$a = '/home/test.png';

$b = '1/test.png';

//$a是待添加的文件路径 $b是压缩包内的路径

$zipArc->addFile($a, $b);

参考资料

原文:https://www.cnblogs.com/liuyublog/p/9606104.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值