Как не странно, но оказалось, что создать zip архив с паролем, использую нативный php класс ziparchive не так просто.
Думал, что достаточно будет вызвать метод setPassword, а дальше использовать addFile, но нет.Как сделать zip архив с паролем на PHP (ziparchive)
23.04.2023
Итак, готовое решение:
$sIn = 'in.xlsx'; $sOut = 'final.zip'; $oZip = new ZipArchive(); $oZip->open($sOut, ZIPARCHIVE::CREATE); $oZip->setPassword('PASS'); $oZip->addFromString($sIn, file_get_contents($sIn)); $oZip->setEncryptionName($sIn, ZipArchive::EM_AES_256); $oZip->close();
Т.е. нужно однократно вызвать setPassword, а потом, для каждого файла addFromString и setEncryptionName.
Но на которых хостингах и этот вариант не работает, тогда остаться только:
$sIn = 'in.xlsx'; $sOut = 'final.zip'; echo system('zip -P pass '.$sOut . ' ' . $sIn);