contraseña zip php
Utiliza el módulo zip de PHP para compresión y cifrado.
Iniciar$zipArc?=?new?\ZipArchive();if($zipArc-gt;open('/home/test.zip',?ZipArchive::CREATE?|?ZipArchive::OVERWRITE )? ===?verdadero)?{//¿Establecer contraseña? Tenga en cuenta que esto no es cifrado, solo establece la contraseña
if(!$zipArc-gt; setPassword('password'))?{throw?new?RuntimeException('Set?password?failed');
}//Agregar archivos al paquete comprimido
$zipArc-gt; addFile('/home/test.png', ?'' 1/test.png'); // ¿Archivos cifrados? El nombre del archivo y la ruta aquí se encuentran en el paquete comprimido
if(! $zipArc-gt; setEncryptionName('1/test.png',?ZipArchive::EM_AES_256))?{throw?new? RuntimeException('¿Establecer?encriptación?falló');
}
}
}
$zipArc-gt;close() ;
p>Notas
1 PHP 7.2 o inferior no admite cifrado
PHP 7 o inferior no admite cifrado. 2. Echemos un vistazo a la explicación en la documentación oficial de PHP
A partir de PHP 7.2.0 y libzip 1.2.0, las contraseñas se utilizan al descomprimir paquetes comprimidos, ZipArchive::setEncryptionName() y ZipArchive: :setEncryptionIndex( ) también utiliza la contraseña predeterminada.
Anteriormente, esta función solo establecía la contraseña para descomprimir el archivo y no convertía un ZipArchive sin contraseña en un ZipArchive protegido con contraseña.
Es decir, antes de php 7.2, el método setPassword('password') solo establece la contraseña para las contraseñas predeterminadas setEncryptionName() y setEncryptionIndex(), ¡sin cifrado!
El método 2 no está cifrado, pero sí cifrado.
2 Método no encontrado
Indica que no hay métodos setEncryptionName y setEncryptionIndex Utilice los siguientes parámetros para compilar el módulo zip
--with-. libzip
--enable-zip
3 Problema de estructura de directorios
El directorio de archivos a comprimir, como /home/test/a. png
Después de la compresión, encontrará que la estructura de directorios en el paquete comprimido es /home/test/a.png.
En otras palabras, el paquete comprimido conserva el directorio original. del archivo original. Pero, ¿qué debemos hacer si queremos personalizar el directorio del paquete comprimido?
$a = '/home/test.png';
$b = '1/test.png' //$a es la ruta al archivo que se agregará. ? $b es la ruta en el paquete comprimido $zipArc-gt; addFile($a, $b);