ZIP un fichier et de le protéger avec un mot de passe en PHP
Je vais avoir ce code pour les fichiers zip, mais j'ai besoin de protéger ce fichier avec un mot de passe
$file = 'backup.sql';
$zipname = $file.'.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
ZipArchive::setPassword('123456');
//$zip->setPassword("123456");
$zip->addFile($file);
$zip->close();
lorsque j'utilise $zip->setPassword je n'ai aucune erreur, mais le fichier n'est pas protégé du tout et quand j'utilise ZipArchive::setPassword je reçois ce message d'erreur "Fatal error: Non méthode statique ZipArchive::setPassword() ne peut pas être appelée de façon statique"
Alors comment compresser un fichier en php et de le protéger avec un mot de passe?
- Double Possible de Comment créer un mot de passe protégé fichier d'archive en PHP?
Vous devez vous connecter pour publier un commentaire.
Oui, la création du mot de passe protégé des archives n'est pas pris en charge (ils vont être créés simplement en tant que non-archives protégées).
Mais, là encore, il peut être utilisé pour extraire les archives protégées par mot de passe.
De retourner le problème.
Vous pouvez toujours juste
(cela fonctionnera à la fois sur Windows et de notre bien-aimé Linux)
Mais, si elle ne s'adapte à vos exigences, nous allons continuer.
Je vous suggère d'utiliser DotNetZip (Windows uniquement), vous aurez exactement générer dynamiquement AES-archives zip cryptés à partir de PHP.
Mais encore, c'est très sale solution et de plus en plus, ne fonctionne que sous Linux.
Donc, bien que PHP est un langage mûr, il n'existe pas de méthode adéquate (à l'exclusion extension personnalisée ou quelque chose comme ça) pour réaliser une telle tâche simple avec uniquement du PHP.
Ce que vous pouvez faire, c'est d'attendre jusqu'à ce que PHP 7.2 sera disponible pour la production (cuz ZipArchive::setEncryptionName est mis en place (merci à Pierre et Rémi)).
Mais, jusqu'à alors vous pouvez aussi essayer de port php_zip >= 1.14.0 PHP < 7.2, mais il n'y a actuellement pas de binaires compilés disponible, donc vous devez le compiler vous-même et essayer de voir s'il est possible à tous (je crois que c'est).
p.s. Je voudrais l'essayer, mais n'ont pas de VS2015+ sur mon PC dès maintenant.
Utiliser PHP 7.2 pour créer un mot de passe protégé fichier zip:
ZipArchive::setPassword
Cette fonction définit uniquement le mot de passe pour décompresser l'archive; il ne tournez pas un non-protégé par mot de passe ZipArchive dans un mot de passe protégé ZipArchive.
code de travail:
$fichier = 'file_name_to_be_compressed.extension'
système (zip -P ZIP_PASSWORD '.$fichier'..zip '.$fichier);
Depuis PHP 7.2 vous pouvez utiliser setEncryptionName pour créer protégé par mot de passe archive ZIP.
Comme il est décrit sur le la documentation:
Si vous voulez chiffrer une archive zip que je vous suggère de google un peu 🙂