如何在我的PHP应用程序中提取受密码保护的.zip文件?

13

我该如何从我的PHP应用程序中提取一个受密码保护的.zip文件?

2个回答

8
自 PHP 5.6.0 版本开始,您可以使用 ZipArchive 类。使用 setPassword() 方法设置密码即可解密文件。
$zip = new ZipArchive();
if ($zip->open('file.zip') === true) {
    $zip->setPassword('MyPassword');
    $zip->extractTo('/my/destination/dir/');
    $zip->close();
}

7
您可以使用此方法(假设您的服务器有“正确”的操作系统 :-))。
echo shell_exec('unzip -P password file.zip');

4
你完全没有使用 PHP,你的执行环境是 PHP。 - orlp
3
我来翻译一下:我想提一下,zip扩展似乎不支持有密码保护的存档文件。@strauberry的回答看起来是可行的方法。 - Ivy Evans
关于可移植性问题,您可以根据平台不同抽象运行命令。无论是在Linux还是Mac上,解压缩应该都能正常工作。 - Ivy Evans
1
好的,那么错误或输出是什么?Linux默认安装了unzip,因此必须存在其他问题,但是如果没有错误消息,没有人能够帮助您! - strauberry
1
请注意,除非安装并配置了诸如SElinuxSMACK或grsecurity等工具来防止此类情况发生,否则此程序将通过ps auxwtop等命令向系统中的其他用户报告提供的密码。 - sarnold
显示剩余6条评论

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