Zip-file downloaden und entpacken

Paspirgilis

Weißer Powerranger
Hi,
1. Eine zip-datei ist auf meinem server "http://domain.tld/download/cms.zip"
2. Eine php-datei ist auf einem anderen Server.

Die PHP-Datei möchte das zip-archive downloaden und entpacken. Wie geht das.
Mit fread und file_get_contents und zip->open->... gibs nur einen Fehler.
Bitte um Hilfe.
 
Hi,
  1. Rechtschreibung beachten
  2. Google benutzen und die offiziellen PHP-Tutorials zu ZIP-Dateien anschauen
  3. Wenn es Fehler gibt, das nicht nur sagen, sondern vielleicht auch welche es sind.
  4. PHP-Version überprüfen!
Dann sehen wir weiter ;-)
 
Irgendwann lade ich hier nochmal meine legastheniker-bestätigung hoch...
xD
Folgende Fehler meldung:
Code:
Warning: ZipArchive::open(): Unable to access http://p-cms.power-of-m.de/download/cms.zip in xxxx/install.php on line 92
0
Warning: ZipArchive::close(): Invalid or unitialized Zip object in xxxx/install.php on line 99
 
Okay... das steht in der Referenz für Zip::Open zwar nicht direkt drin, nur versteckt: Der erste Parameter string $filename ist ein Dateiname, kein Pfad. Du kannst also nur lokal verfügbare Dateien verwenden, so wie das aussieht.

Dann musst du mal schauen, ob es nötig ist, die Datei runterzuladen und abzuspeicher, nur um dann Zip::Open benutzen zu können, oder ob du der Zip-Klasse auch direkt einen Stream zu der Datei andrehen kannst... Ansonsten schau dir mal den Wordpress-Sourcecode an, die machen sowas, was du wahrscheinlich auch vorhast (neue Version automatisch runterladen und installieren), und das funktioniert bei denen...
 
in der PHP.ini habe ich foglende parameter eingestellt:

enable_dl = On
file_uploads = On
upload_max_filesize = 128M
allow_url_fopen = On
allow_url_include = On

dies ist mein fehler:
Code:
ZipArchive::open(): Unable to access http://p-cms.power-of-m.de/download/cms.zip
selben fehler bekomme ich mit foglenden PHP funktionen:
PHP:
            $file = 'http://p-cms.power-of-m.de/download/cms.zip';

            $zip = new ZipArchive;
            if ($zip->open($file) === TRUE) {
                $zip->extractTo('test/');
                $zip->close();
                echo '1';
            } else {
                echo '0';
            }
PHP:
            $file = 'http://p-cms.power-of-m.de/download/cms.zip';
            copy($file, 'cms.zip');

            $zip = new ZipArchive;
            if ($zip->open('cms.zip') === TRUE) {
                $zip->extractTo('test/');
                $zip->close();
                echo '1';
                delete('cms.zip');
            } else {
                echo '0';
            }
 
hi ich denke wenn du copy benutzt solltest du schauen das du 1. linux konforme pfade als ziel benutzt (das wäre dann "./cms.zip") und 2. musst du in diesem ordner auch schreibrechte besitzen, ansonsten mit sys_get_temp_dir() in den temporär ordner schreiben.

um zu schauen ob die datei überhaupt richtig runtergeladen wurde könntest du das ganze noch in eine if..else anweisung einpacken..

habs nicht probiert aber versuchs mal und berichte ;-)
 

Neue Beiträge

Zurück