PHPKonf 2020 Online

ZipArchive::setPassword

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

ZipArchive::setPasswordSet the password for the active archive

Descrição

public ZipArchive::setPassword ( string $password ) : bool

Sets the password for the active archive.

Parâmetros

password

The password to be used for the archive.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em caso de falha.

Notas

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.

Veja Também

add a note add a note

User Contributed Notes 2 notes

up
20
stanislav dot eckert at vizson dot de
6 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
3
blindfury at mailinator dot com
2 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