略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: ZipArchive::setPassword

2024-12-22

ZipArchive::setPassword

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

ZipArchive::setPasswordSet the password for the active archive

说明

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

Sets the password for the active archive.

参数

password

The password to be used for the archive.

返回值

成功时返回 true, 或者在失败时返回 false

注释

注意:

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.

参见

add a noteadd a note

User Contributed Notes 2 notes

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

?>

官方地址:https://www.php.net/manual/en/ziparchive.setpassword.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3