ZipArchive::setPassword

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

ZipArchive::setPassword设置活动归档文件的密码

说明

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

设置活动归档文件的密码。

参数

password

要用于归档文件的密码。

返回值

成功时返回 true,失败时返回 false

注释

注意:

从 PHP 7.2.0 和 libzip 1.2.0 开始,密码用于解压缩归档文件,也是 ZipArchive::setEncryptionName()ZipArchive::setEncryptionIndex() 的默认密码。以前,此函数仅设置用于解压缩归档文件的密码;它不会将非密码保护的 ZipArchive 变成密码保护的 ZipArchive

参见

添加注释

用户贡献的注释 2 个注释

18
stanislav dot eckert at vizson dot de
9 年前
似乎此函数仅支持密码保护归档文件的解密(参见变更日志:http://pecl.php.net/package-changelog.php?package=zip)。不支持创建密码保护的归档文件(它们将被简单地创建为非保护归档文件)。

从密码保护的 ZIP 归档文件中提取文件的示例代码

<?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 .")");
}
?>
1
blindfury at mailinator dot com
6 年前
要在 PHP >= 7.2 中创建密码保护的归档文件,请使用

<?php
$zip
->setEncryptionName('test.txt', ZipArchive::EM_AES_256, 'test');
?>

基于文档中的示例

<?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