如何提取具有使用PHP只有密码的ZIP文件?(How to extract a ZIP file t

2019-07-17 12:53发布

我看到的这里只有一个问题,但它并没有回答我的问题。 我正在运行有最最新的PHP 5和MYSQL 5红帽Linux的一个典型的LAMP服务器。

我需要找到一个PHP唯一的解决办法,因为我的主机不允许我使用shell。

这里是我的代码,其提取不从vBulletin上传需要密码到另一个目录ZIP探头:

if ($_GET['add'] == TRUE){
$zip = new ZipArchive;
 $res = $zip->open($SOURCE FOLDER);
 if ($res === TRUE) {
     $zip->extractTo('$DESTINATION FOLDER/');
     $zip->close();
     echo 'File has been added to the library successfuly';
     //Add a flag to that file to indicate it has already been added to the library.
     mysql_query("UPDATE attachment SET library = 1 WHERE filedataid='$fileid'");    
 } else {
     echo 'A uncompression or file error has occured';
 }}

一定有什么办法做到这一点只用PHP,当然! 谢谢。

更新:我的主人告诉我,是的gzip安装在服务器上而不是7-Zip的。 我期待到shell访问过。

Answer 1:

有7zip的可执行文件提供给脚本,并调用它通过系统解压缩文件的密码()。

$strCommandLine = "7z e fileToUnzip.7z -pTHEPASSWORD";
system($strCommandLine);

你可以做类似的东西unzip ,如果有安装在您的主机。 见http://linux.about.com/od/commands/l/blcmdl1_unzip.htm 。

它支持-P用密码,所以是这样的:

$strCommandLine = "unzip fileToUnzip.7z -P THEPASSWORD";
system($strCommandLine);

警告:有人可以看到,命令行上你的密码,如果他们做了PS系统,看看你的unzip命令运行。



Answer 2:

您可以使用此功能setPassword(字符串$密码) http://php.net/manual/en/ziparchive.setpassword.php



文章来源: How to extract a ZIP file that has a password using only PHP?