Home>Guide>Come decomprimere un archivio ZIP con PHP

Come decomprimere un archivio ZIP con PHP


Come decomprimere un archivio ZIP con PHP

A volte potrebbe capitarti di dover spostare una grossa mole di dati da un server all’altro, o da computer locale a FTP remoto. La maggior parte di queste operazioni viene eseguita effettuando l’upload della cartella principale, cosa che comporta il trasferimento file per file.
Ma sapevi che il tempo impiegato per spostare un singolo file rispetto a file multipli, a parità di dimensione totale, richiede meno tempo?
È sicuramente più conveniente effettuare l’upload di un unico archivio .zip sul server remoto e poi procedere con la decompressione del file sul server stesso, se non sai come fare, questa guida è stata scritta apposta per te!

  • Leggi l'articolo, ti bastano solo 1 minuto, 28 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

La classe ZipArchive

Il linguaggio PHP supporta nativamente la possibilità di comprimere/decomprimere file di archivio in formato zip già dalla versione 5.2.0 grazie alla classe ZipArchive.


Verificare se la classe ZipArchive è abilitata

Ma purtroppo, a seconda delle configurazioni e delle politiche di sicurezza, non tutti i provider abilitano di default l’utilizzo di ZipArchive. Come verificare se il tuo server è configurato in maniera tale da permetterne l’utilizzo? È molto semplice! Crea nella root del tuo server un nuovo file, ad esempio info.php, inserendo al suo interno la sola riga di codice:

<?php phpinfo(); ?>

dopodiché, accedi a questa pagina tramite un qualsiasi browser. Ad esempio, se il tuo server è raggiungibile all’indirizzo https://www.example.com/, non dovrai fare altro che aprire il tuo browser e visitare l’indirizzo:

https://www.example.com/info.php

Scorrendo la pagina che elenca tutte le configurazioni del server che ospita la pagina stessa, troverai le righe riguardanti l’utilizzo della classe ZipArchive, come in figura:

Se in corrispondenza della voce “Zip” trovi la dicitura “enabled” (esattamente come in figura), vuol dire che la classe è attiva ed utilizzabile, in caso contrario, contatta il tuo provider e richiedine l’abilitazione.


Decomprimere un file zip con la classe ZipArchive

Ora che hai verificato il corretto funzionamento della class ZipArchive sul tuo server, possiamo procedere con la funzione che si occuperà di decomprimere il file archivio in formato .zip.
Crea un nuovo file nella cartella root del server, ad esempio unzip.php, inserendo al suo interno le righe di codice:

// Funzione per decomprimere un archivio zip
function unzip_file( $filename, $destination ) {
	// Creo un nuovo oggetto della classe ZipArchive
	$archive = new ZipArchive();

	// Apro il file archivio da decomprimere
	if ( $archive->open( $filename ) !== true ) {
		die( 'Si è verificato un errore nella decompressione del file' . $filename );
	}

	// Effettuo l'estrazione dei files
	$archive->extractTo( $destination );
	
	// Chiudo l'archivio
	$archive->close();

	echo 'Estrazione archivio completata';
}

Adesso, non ti resta che chiamare la funzione con i giusti parametri ed il gioco è fatto!


Un esempio pratico

Cosa c’è di meglio di un buon esempio per comprendere a pieno un argomento? Eccone uno adatto!
Ipotizza di avere sul tuo server un file chiamato wordpress-4.9.8-it_IT.zip e di volerlo decomprimere direttamente sul server, nella cartella stessa in cui il file zip è presente.
Ti basterà modificare il file unzip.php contenente la funzione discussa in precedenza ed aggiungere la chiamata alla stessa in questo modo:

// Indica il percorso assoluto del file zip da decomprimere
$filename = 'wordpress-4.9.8-it_IT.zip';
 
// Determina il percorso assoluto in cui verrà decompresso il file (stesso nome del file nella cartella di default)
$destination = 'wordpress';
unzip_file( $filename, $destination );

Se desideri approfondire l’argomento e saperne di più sulla classe ZipArchive, leggi la documentazione ufficiale:




Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Aggiungere un effetto rotazione alle cards di Bootstrap

Aggiungere un effetto rotazione alle cards di Bootstrap


Stanco dei soliti layout statici? Aggiungi un tocco di classe al tuo sito con questo fantastico effetto di animazione con CSS3 e jQuery.

Come rendere sicuro WordPress

Come rendere sicuro WordPress


Vuoi conoscere le best practices per mettere in sicurezza WordPress? Ecco lista di cose da fare per proteggere il tuo sito.

Oppure cerca tra gli articoli correlati


E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)