Buonasera,
con uno script PHP sto provando ad aprire un file zip protetto da password.
Sono su server Linux ed ho già provato con queste funzioni e con diverse query (non prendete il codice alla lettera, ho scritto tutto in fila soltanto per essere breve):
Codice PHP:
$query = "`which unzip` $zip_file"; # funziona se il file non è protetto da password
#oppure
$query = "`which unzip` -P $zipPassword $zip_file"; # non funziona in nessun caso
# oppure
$query = "`which unzip` $zip_file -P $zipPassword"; # non restituisce errori, ma non funziona
/* con le seguenti funzioni e le precedenti query (una combinazione
alla volta) ottengo sempre i medesimi risultati */
shell_exec($query);
#oppure
exec($query);
#oppure
system($query);
Ah, nelle query ho provato anche senza "BACKTICKS" e/o senza "which"... nessun cambiamento...
Ho a disposizione le estensioni di PHP php_zip e zlib quindi ho provato con la classe ZipArchive:
Codice PHP:
$zip_file = "mioFile.zip";
$src_dir = "miaDirectorySorgente";
$extract_dir = "miaDirectoryDiDestinazione";
zip = new ZipArchive();
$res = $zip->open($src_dir.'/'.$zip_file);
if ($res === TRUE) {
$zip->extractTo($extract_dir . '/');
$zip->close();
$error = 'ok';
} else {
$error = 'failed';
}
echo $error;
Funziona perfettamente nel caso di archivio non protetto. Se lo zip è protetto da password, invece, mi estrae i file ma in realtà sono tutti vuoti. Purtroppo non ho idea di come si imposti la password in questa classe...
Mi sono documentato (ZipArchive:
pen e ZipArchive::extractTo) ma non ho trovato niente di interessante.
Qualcuno sa darmi qualche dritta?
Grazie!