Zum Inhalt springen

.zip mit PHP entpacken [exec()]

Häufig sollen Benutzer mehrere Dateien auf einmal als .zip verpackt hochladen können. Sofern es die Serverkonfiguration zulässt, empfiehlt es sich auf Linux und Unix Systemen über exec() und unzip die folgende Variante zu verwenden (nicht bei Windows – hier müssten die über exec() ausgeführten Operationen angepasst werden).

<?php
    //Funktion:

    function unzip($location,$newLocation){

        if(exec("unzip $location",$arr)){
            mkdir($newLocation);
            for($i = 1;$i< count($arr);$i++){
                $file = trim(preg_replace("~inflating: ~","",$arr[$i]));
                copy($location.'/'.$file,$newLocation.'/'.$file);
                unlink($location.'/'.$file);
            }
            return TRUE;
        }else{
            return FALSE;
        }
    }
?>
//Anwendung:
<?php
include 'functions.php';
if(unzip('zipedfiles/test.zip','unziped/test'))
    echo 'Erfolgreich entpackt';
else
    echo 'Entpacken fehlgeschlagen';
?>