Сначала я создал скрипт для создания zip-файла конкретного каталога, а затем удалял все файлы, кроме zip, из отлично работающего каталога.
Но теперь я применил команду пароля zip -P в скрипт, чтобы сделать ее защищенной паролем, которая не работает,
Когда я попытался извлечь файл после загрузки, он распаковывается без запроса пароля. Пожалуйста, дайте мне понять, что я делаю.
вот как я пытался это сделать:
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 \{\} \;
Я получил решение, это работает с рекурсивным режимом создания 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 \{\} \; ' );
Надеюсь, это поможет кому-то еще;)