使用PHP打开和创建密码保护的zip文件

9

我找到了以下两个命令,可以分别创建和打开密码保护的zip文件。但是我想知道是否有可能在纯PHP中完成此操作。

echo system('zip -P password file.zip file.txt');  
echo shell_exec('unzip -P password file.zip');

我假设你已经了解了PHP的Zip扩展http://us3.php.net/manual/en/book.zip.php,但我认为它不支持密码保护的存档。 - Michael Berkowski
被接受的答案不正确。请检查我的答案。 - Salvador Dali
3个回答

5

PHP5.6.x版本中,开发者添加了功能,使得以下操作不再仅限于PHP5.6.0。因此,您无需使用可导致安全漏洞的systemshell_exec命令。

现在,您可以这样做:

ZipArchive::setPassword($password)

2
为什么这不是被接受的答案?最好的问候,你救了我的一天 :) +1 - Jacek Kowalewski
2
阅读?是的,添加文件?从我的角度来看还没有:https://bugs.php.net/bug.php?id=67590&thanks=4 - Marcos Fernandez Ramos
6
ZipArchive::setPassword($password)只适用于读取zip档案,而不是创建zip档案:注意:此函数仅设置密码以用于解压缩存档;它不能将未受密码保护的ZipArchive转换为受密码保护的ZipArchive。http://php.net/manual/en/ziparchive.setpassword.php - IVIR3zaM

3
不,PHP的ZIP库不支持密码。您可以寻找另一个支持密码并具有PHP语言绑定的ZIP库。
我不知道有哪些支持创建和打开的库。

你知道有哪些库可以打开或创建文件吗? - Adrien Hingert
同样的道理也适用于 "或者"。你可以在互联网上搜索,我想你知道自己在寻找什么。之后你可以将其作为答案留下并接受它。 - hakre

3

您可以使用一些库(例如PclZip)创建简单的文件压缩包,但无法创建带密码的压缩包。


PclZip 能打开有密码保护的文件吗? - hakre
1
@hakre,首先感谢您编辑我的答案。无论如何,据我所知,它无法执行。 - Aurelio De Rosa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接