PHP Conference Japan 2024

ZipArchive::setPassword

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

ZipArchive::setPassword設定活動壓縮檔的密碼

說明

public ZipArchive::setPassword(#[\SensitiveParameter] 字串 $password): 布林值

設定活動壓縮檔的密碼。

參數

password

要用于壓縮檔的密碼。

回傳值

成功時回傳 true,失敗時回傳 false

注意事項

注意:

從 PHP 7.2.0 和 libzip 1.2.0 開始,密碼會用於解壓縮檔案,並且也是 ZipArchive::setEncryptionName()ZipArchive::setEncryptionIndex() 的預設密碼。在此之前,這個函式僅設定用於解壓縮檔案的密碼;它不會將未受密碼保護的 ZipArchive 轉換為受密碼保護的 ZipArchive

另請參閱

新增註解

使用者貢獻的註解 2 則註解

stanislav dot eckert at vizson dot de
10 年前
似乎此函式僅支援解密受密碼保護的檔案(請參閱更新日誌: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
"解壓縮失敗(密碼錯誤?)";
}

$zip->close();
}
else
{
die(
"開啟檔案失敗: ". @$zip->getStatusString() . " (代碼: ". $zip_status .")");
}
?>
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