PHP 8.6.0 Beta 1 is available for testing

ZipArchive::setPassword

(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)

ZipArchive::setPasswordSet the password for the active archive

Description

public function ZipArchive::setPassword(#[\SensitiveParameter]string $password): bool

Sets the password for the active archive.

Parameters

password
The password to be used for the archive.

Return Values

Returns true on success or false on failure.

Notes

Note: As of PHP 7.2.0 and libzip 1.2.0 the password is used to decompress the archive, and is also the default password for ZipArchive::setEncryptionName() and ZipArchive::setEncryptionIndex() . Formerly, this function only set the password to be used to decompress the archive; it did not turn a non-password-protected ZipArchive into a password-protected ZipArchive .

See Also

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 2 notes

up
19
stanislav dot eckert at vizson dot de
11 years ago
It seems that this function supports only decryption of password protected archives (see changelog: http://pecl.php.net/package-changelog.php?package=zip). Creation of password protected archives is not supported (they will be created simply as non-protected archives).
Example code for extraction of files from password protected ZIP archives:
<?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 .")");
 }
?>
up
1
blindfury at mailinator dot com
8 years ago
To create password protected archive in PHP >= 7.2 use:
<?php
 $zip->setEncryptionName('test.txt', ZipArchive::EM_AES_256, 'test');
?>

Based on example from the documentation:
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
 $zip->addFromString('test.txt', 'file content goes here');
 $zip->setEncryptionName('test.txt', ZipArchive::EM_AES_256, 'passw0rd');
 $zip->close();
 echo 'ok';
} else {
 echo 'failed';
}
?>
+add a note

AltStyle によって変換されたページ (->オリジナル) /