PHP exec ZIP с паролем - PullRequest
       1

PHP exec ZIP с паролем

2 голосов
/ 10 июня 2011

Хорошо, ребята, я работаю над этим со вчерашнего дня, и это сводит меня с ума.

Я создаю способ загрузки и архивирования файла на лету, но также этот zip-файл должен быть затем защищен паролем (запрос клиента, к сожалению).

Теперь все в порядке, пока защита паролем не работает вообще.

Я знаю, что exec настолько небезопасно, но, поверьте мне, я просто хочу найти решение прямо сейчас.

Это код

if(isset($_FILES['fileSound']['name']) && isset($_FILES['fileLyric']['name'])) {
$nameFileSound = $_FILES['fileSound']['name'];
$tmpNameSound = $_FILES['fileSound']['tmp_name'];
$nameFileLyric = $_FILES['fileLyric']['name'];
$tmpNameLyric = $_FILES['fileLyric']['tmp_name'];
$download_folder = './CopyrightFiles/';
$zip = new ZipArchive();
$fileconpress = $download_folder .  $RefNum . ".zip";

$conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE);
if ($conpress === true)
{

    $zip->addFile($tmpNameSound, $nameFileSound);
    $zip->addFile($tmpNameLyric, $nameFileLyric);
    $zip->close(); 
    echo $fileconpress."<br/>";
    echo "yess !! Success!!!! ";
}
else echo " Oh No! Error";
}

exec("zip -r ".$download_folder.$RefNum.".zip -P password ".$download_folder.$RefNum."-protected.zip");

Теперь $RefNum - такая строка 1333-COP-3899827399283.

Я проверил, работает ли команда exec на сервере, и да.

Ошибки не отображаются.

Что я делаю не так?

Может быть, путь?

Какой путь мне следует использовать для команды exec?

Например, опция $ zip начинается с public_html

Где начинается exec?

Как вы думаете, это проблема или есть какая-то другая проблема?

Пожалуйста, помогите мне.

Спасибо!

1 Ответ

2 голосов
/ 10 июня 2011

Для начала вам нужно изменить порядок аргументов:

exec("zip -P password $download_folder$RefNum-protected.zip $Orig.zip");

Кстати, похоже, с помощью обычной команды Unix zip нет способа обновить zip-файл. Вы переупакуете оригинальный zip-файл как еще один защищенный паролем zip-файл здесь.

Если это не удастся, то посмотрите на error.log для подсказок. Или используйте print exec(...) после добавления 2>&1 после команды, чтобы увидеть все сообщения об ошибках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...