You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP ZipArchive设置密码不生效 加密压缩包无法用指定密码打开

问题原因

你对ZipArchive::setPassword方法的作用理解有误,该方法仅用于读取已加密的压缩包时设置解压用的默认密码,无法用于设置压缩加密阶段的密码,这是你设置的密码不生效的核心原因。

解决方案

加密压缩时不需要调用setPassword,直接将密码作为第三个参数传入setEncryptionName方法即可,你的代码调整后如下:

$zip = new ZipArchive();
if ($zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
    $zip->addFile('thing1.txt'); // 添加文件的顺序不变
    // 加密时直接指定密码
    $zip->setEncryptionName('thing1.txt', ZipArchive::EM_AES_256, 'mypassword');
    $zip->close();
}

注意事项

  • 你当前使用的PHP 7.3 + Libzip 1.8环境完全支持上述语法,无需额外调整环境配置
  • 如果有多个文件需要加密,对每个文件调用setEncryptionName时传入相同的密码即可
  • 测试解压时优先使用7-Zip等支持AES-256加密标准的解压工具,部分老旧解压工具不兼容该加密标准,会误报密码错误

内容的提问来源于stack exchange,提问作者fractal5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:24:07