Intereting Posts
Хранение ведущих нулей целых чисел в базе данных MySQL как INTEGER jQuery: как остановить функцию AJAX, избегая строки JSON, используемой для данных POST Zend Forms – populate () и setDefaults () создание имени переменной путем конкатенации строк в php используя Carbon, чтобы узнать, попадает ли время в два пункта или нет Зарегистрировать форму с помощью php, mysql Как использовать активную загрузку здесь, я имею в виду только одну переменную вместо двух. Поэтому мне не нужно запускать два отдельных запроса PHP session_start (); не работает, когда инициируется в верхней части страницы Volley Json Запросы не работают – строка не может быть преобразована в JsonObject / JsonArray Постоянный вход в PHP – я переиздаю файл cookie после каждой проверки подлинности на странице? Недопустимое разрешение file_put_contents Черты с PHP и Laravel php password_verify не работает с базой данных Проблема с запросом авторизации Zend Framework addMultiOption добавляет настраиваемые параметры, такие как «rel» для параметров

Как извлечь ZIP-файл с паролем, используя только PHP?

Я видел здесь только один вопрос, но он не отвечает на мой вопрос. Я запускаю типичный LAMP-сервер, который имеет самые современные PHP 5 и MYSQL 5 с Redhat Linux.

Мне нужно найти только PHP-решение, потому что мой хост не позволяет мне использовать оболочку.

Вот мой код, который извлекает ZIP-файлы, которые не защищены паролем из загрузок vBulletin в другой каталог:

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, конечно! Спасибо.

UPDATE: Мой хост сообщает мне, что gzip установлен на сервере, но не 7-Zip. Я также просматриваю доступ к оболочке.

Solutions Collecting From Web of "Как извлечь ZIP-файл с паролем, используя только PHP?"

Имеем исполняемый файл 7zip доступным для скрипта и вызывайте его, чтобы распаковать файл с помощью пароля через system ().

 $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 в системе и видят вашу команду распаковки.

вы можете использовать эту функцию setPassword (строка $ password) http://php.net/manual/en/ziparchive.setpassword.php