在Windows中使用PHP创build受密码保护的Zip文件

我正在用PHP创build一个给定文件的zip文件。 以下是function

function create_zip($file, $file_name) { $zip = new ZipArchive(); $zip_name = $file_name. ".zip"; // Zip name $zip->open($zip_name, ZipArchive::CREATE); if (file_exists($file)) { $zip->addFromString(basename($file), file_get_contents($file)); } else { return "file does not exist"; } $zip->close(); return $zip_name; } 

我想为Zip文件添encryption码保护。 我发现下面的代码来创build一个密码保护的zip文件

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

但是它不能正常工作。 你可以请指导我如何添encryption码保护的Zip文件?

PHP的Zip – http://php.net/manual/en/book.zip.php – 不支持密码保护的zip文件,你需要通过命令行来完成。

要对文件进行密码保护,需要使用zip命令行,确保zip命令行程序存在,在许多系统上默认不安装。

在新的PHP 5.6 ( 目前处于测试阶段 ),您可以使用ZipArchive创建密码保护的存档。 所有你需要的是添加这个代码ZipArchive::setPassword($password)

编辑:显然它只支持解密 ,而不是加密。

我意识到这是一个古老的线程,但任何人都在为Windows环境中的存档添加密码而苦苦挣扎,我使用winrar命令行和exec在PHP中解决了这个问题。

http://www.rarlab.com/下载winrar,并将WinRAR.exe包含在PHP脚本目录中,或者从exec命令的右边目录中调用它。

exec("winrar a -p[password] [archive name] [file or folders to include]");

在上面的例子中, winrar是指与您的脚本在同一目录中的winrar.exe。 如果winrar.exe与您的脚本不在同一个目录中,您可以简单地包含路径:

exec("C:\Program Files\Winrar...

所以,例如: exec("winrar a -ppassword archive.zip file.txt");

将导致一个名为“archive.zip”的档案由“file.txt”创建,密码为“password”。

有关winrar命令行的更多信息: http : //acritum.com/software/manuals/winrar/