Comprimir un archivo ZIP con contraseña usando PHP

Webman -  
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   -
Hola a todos!

Tengo una versión de PHP 5.6.3
Quiero crear un zip con una contraseña mediante un script PHP.
Con la función a continuación logro comprimir mis archivos pero no se pide contraseña durante la descompresión. (La contraseña no funciona)

¿Alguien puede ayudarme?

Aquí está mi script:

<?php
//**********función para comprimir archivos en zip********

function createZipFile($zipfile,$files){

$zip=new ZipArchive();

if($zip->open($zipfile, ZipArchive::CREATE) !== TRUE){

throw new Exception('Erreur: ouverture ou création impossible');

}

foreach($files as $file){

$zip->addFile($file);

$zip->setPassword('Mot2Passe');

}

$zip->close();

}

?>

2 respuestas

  1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
     
    Bonjour,

    Comme indiqué dans le manuel de cette fonction https://www.php.net/manual/fr/ziparchive.setpassword.php ... elle ne sert pas à protéger une archive....
    Elle sert pour décompresser une archive (déjà protégée et que tu veux extraire depuis ton script php)

    This function only sets the password to be used to decompress the archive; it does not turn a non-password-protected ZipArchive into a password-protected ZipArchive. 


    Comme le dit Erutan409 ... (voir le lien que je t'ai donné avant....) ... il aurait été plus judicieux de nommer cette fonction "usePassword" .. ^^

    --
    Cordialement, 
    Jordane
    0
    1. Webman
       
      Ah Ok Gracias a ti Jordane45 por explicarme este principio.

      ¿Pero no habrá alguna forma de añadir una contraseña durante la compresión?
      0
  2. Webman
     
    Ah Ok Gracias Jordane45 por explicarme este principio.

    Pero ¿no habrá una forma de añadir una contraseña durante la compresión?
    0
    1. jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
       
      no a mi conocimiento.
      O bien... hay que usar un script shell (si estás en Linux) o eventualmente los comandos 'system' en PHP
       system('zip -P pass file.zip tonfichier'); 


      pero parece que no es lo mejor ... personalmente no lo he probado.
      0