SebastianJu: ZIP-Archiv entpacken

Hallo,

ich brauche die Funktionalität ein Zip-Archiv welches per php hochgeladen wird zu entpacken. Das Archiv ist mit einem Passwort verschlüsselt. Jetzt musste ich feststellen dass die php-Funktionen für Zip-Archive scheinbar keine Funktionalität für Passwörter haben.

Ich habe ein wenig gesucht und habe diesen Tip hier gefunden:

http://de3.php.net/manual/de/ref.zip.php

Ich kann mit

echo '<pre>';
system("unzip -help");
echo '</pre>';

die Parameter von unzip per php aufrufen. Soweit klappt das also schon.

Meine Funktion sieht so aus:
system("which unzip ".$archiv['dateipfad'].$archiv['full']." -P password",$success);

Warum which unzip weiß ich nicht. Zumindest funktioniert es genauso mit unzip.

Problem ist jetzt noch dass ich nicht weiß wie ich das mit dem Dateipfad machen kann. Denn ich weiß zwar wo die hochgeladene Datei im Netz liegt aber es braucht scheinbar den Pfad des Servers. Also des echten Dateisystems. Denn bisher meldet $success immer Fehlercode 11 zurück welches wohl bedeutet dass das zip nicht gefunden wurde. Ich habe in meinem pfad ja auch einfach nur den relativen Pfad von der domain aus angegeben.
Ich habe bisher versucht die Domain samt http:// dazuzunehmen und auch /var/www/web24/user/cc24_02/web/ davorgeschrieben weil dass in den Servervariablen steht.
Hat alles nicht funktioniert. Brauche ich wirklich einen festen Pfad im Dateisystem des Servers? Gibt es da nichts dynamisches?

Oder gibt es eine andere Möglichkeit solche Zips zu entpacken?

  1. Ich hab die Lösung jetzt. Samt Dynamik. Wird jetzt alles sauber entpackt.

    $archiv['serverpath']=rtrim($_SERVER['SCRIPT_FILENAME'],$_SERVER['SCRIPT_URL']).'/';  
        $command="unzip -P password ".$archiv['serverpath'].$archiv['dateipfad'].$archiv['full']." -d ".$archiv['serverpath'].$archiv['dateipfad'];  
    system($command,$success);
    

    $archiv['dateipfad'] enthält den Pfad relativ von der Hauptdomain
    .$archiv['full'] enthält den Zip-Dateinamen