PHP 8.4.0 RC4 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

Descrizione

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

Sets the password for the active archive.

Elenco dei parametri

password

The password to be used for the archive.

Valori restituiti

Restituisce true in caso di successo, false in caso di fallimento.

Note

Nota:

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.

Vedere anche:

add a note

User Contributed Notes 2 notes

up
21
stanislav dot eckert at vizson dot de
10 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
6 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';
}

?>
To Top