zip -P命令无法创建密码保护zip文件

时间:2013-12-28 04:52:31

标签: php linux zip

首先,我创建了一个脚本,用于创建特定目录的zip文件,然后从工作正常的目录中删除除zip之外的所有文件。

但是现在我在脚本中实现了zip -P password命令,使其密码保护无法正常工作,

当我尝试在下载后提取文件时,它会在不询问任何密码的情况下提取。请让我正确告诉我,我做错了什么。

这就是我试图这样做的方式:

exec('cd ' . escapeshellarg($directory_location) . ' ; zip -r ' .escapeshellarg($directory_location).'/'.escapeshellarg($zipname) . ' * ; '.$command.' '.escapeshellarg($zipname).' chmod 777 '.escapeshellarg($zipname).'; find . -type f -not -name \''.escapeshellarg($zipname).'\' -exec rm \{\} \; ' );

这是输出:

cd '/home/example/public_html/downloads/9c1f97ab931b9f4dc461c164f119a340/20' ; zip -r '/home/example/public_html/downloads/9c1f97ab931b9f4dc461c164f119a340/20'/'Xm18u_download.zip' * ; zip -P 'testPassword' '/home/example/public_html/downloads/9c1f97ab931b9f4dc461c164f119a340/20'/'Xm18u_download.zip' 'Xm18u_download.zip' ; 'Xm18u_download.zip' chmod 777 'Xm18u_download.zip'; find . -type f -not -name ''Xm18u_download.zip'' -exec rm \{\} \;

已关闭(找到解决方案)

1 个答案:

答案 0 :(得分:1)

我得到了解决方案,这是使用递归模式zip文件创建:

zip -r -P <password> 

对我来说是:

$command = '-P '.escapeshellarg($password);
exec('cd ' . escapeshellarg($directory_location) . ' ; zip -r '.$command.' ' .escapeshellarg($directory_location).'/'.escapeshellarg($zipname) . ' * ; '.escapeshellarg($zipname).' chmod 777 '.escapeshellarg($zipname).'; find . -type f -not -name \''.escapeshellarg($zipname).'\' -exec rm \{\} \; ' );

希望这对其他人有帮助;)