PHPCon Poland 2024

ZipArchive::setPassword

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

ZipArchive::setPasswordDéfinit le mot de passe de l'archive active

Description

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

Définit le mot de passe de l'archive active.

Liste de paramètres

password

Le mot de passe à utiliser sur l'archive.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Notes

Note:

À partir de PHP 7.2.0 et libzip 1.2.0, le mot de passe est utilisé pour décompresser l'archive, et est également le mot de passe par défaut pour ZipArchive::setEncryptionName() et ZipArchive::setEncryptionIndex(). Précedemment, cette fonction ne définissait que le mot de passe à utiliser pour décompresser l'archive ; elle ne permettait pas de transformer une ZipArchive non protégée par mot de passe en une ZipArchive protégée par un mot de passe.

Voir aussi

add a note

User Contributed Notes 2 notes

up
19
stanislav dot eckert at vizson dot de
9 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
0
blindfury at mailinator dot com
6 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