我正在用PHP创建给定文件的zip文件。以下是功能
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文件添加密码保护。我找到了以下代码来创建受密码保护的zip文件
system('zip -P password file.zip file.txt');
但它无法正常工作。你能指导我如何在Zip文件上添加密码保护?
答案 0 :(得分:3)
PHP Zip - http://php.net/manual/en/book.zip.php - 不支持受密码保护的zip文件,您需要通过命令行进行操作。
要对文件进行密码保护,您需要使用zip
命令行,确保存在zip
命令行程序,默认情况下不会在许多系统上安装它。
答案 1 :(得分:2)
在新的 PHP 5.6 (currently in beta)中,您可以使用ZipArchive创建受密码保护的档案。您只需添加此代码ZipArchive::setPassword($password)
编辑:显然只有supports decryption,还没有加密。
答案 2 :(得分:1)
我意识到这是一个老线程,但是任何人都在为Windows环境中的存档添加密码而苦苦挣扎,我使用winrar命令行和PHP中的exec
来解决这个问题。
从http://www.rarlab.com/下载winrar并在您的PHP脚本目录中包含WinRAR.exe,或者从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/