Я видел здесь только один вопрос, но он не отвечает на мой вопрос. Я запускаю типичный 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. Я также просматриваю доступ к оболочке.
Имеем исполняемый файл 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