ZipArchive::setPassword

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

ZipArchive::setPassword β€” УстанавливаСт пароля для Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π°

ОписаниС

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

Π—Π°Π΄Π°Ρ‘Ρ‚ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π°.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

password
ΠŸΠ°Ρ€ΠΎΠ»ΡŒ для Π°Ρ€Ρ…ΠΈΠ²Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈΠ»ΠΈ false, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Начиная с PHP 7.2.0 ΠΈ libzip 1.2.0 ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для распаковки Π°Ρ€Ρ…ΠΈΠ²Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ZipArchive::setEncryptionName() ΠΈ ZipArchive::setEncryptionIndex(). РаньшС ΠΌΠ΅Ρ‚ΠΎΠ΄ устанавливал ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для распаковки. ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π»Π° Π½Π΅Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ экзСмпляр ZipArchive Π² Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ZipArchive.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • ZipArchive::setEncryptionIndex() - УстанавливаСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ записи ΠΏΠΎ индСксу
  • ZipArchive::setEncryptionName() - УстанавливаСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ записи ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 2 notes

up
18
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';
}

?>