I just want to set password in already existing zip archive, I use method $zip->setPassword("MySecretPassword")
, The function returns true, but password is absent. After code running I can extract files without puting password. Here is my code like this:
<?php
$zip = new ZipArchive();
$zip_status = $zip->open("test.zip");
if ($zip_status === true)
{
if ($zip->setPassword("MySecretPassword"))
{
if (!$zip->extractTo(__DIR__))
echo "Extraction failed (wrong password?)";
}
$zip->close();
}
else
{
die("Failed opening archive: ". @$zip->getStatusString() . " (code: ". $zip_status .")");
}
?>
Can any one help me.
http://php.net/manual/en/ziparchive.setpassword.php
This function only sets the password to be used to decompress the archive; it does not turn a non-password-protected ZipArchive into a password-protected ZipArchive.
The top comment also says
Wouldn't it make sense for this method to be named ZipArchive::usePassword, instead? There seems to be a lot of people thinking that its name, currently (ZipArchive::setPassword), is for applying a password. I think nomenclature should certainly be up for discussion on this method.
This would suggest that this function is for setting the password when performing extraction only using the ZipArchive class.