Ich möchte eine Datei entpacken und das funktioniert gut
system('unzip File.zip');
Aber ich muss den Dateinamen über die URL übergeben und kann ihn nicht zum Laufen bringen, das ist was ich habe.
$master = $_GET["master"];
system('unzip $master.zip');
Was vermisse ich? Ich weiß, dass es etwas Kleines und Dummes sein muss, das ich übersehen habe.
Danke dir,
system("unzip $master.zip");
sollte also funktionieren.Antworten:
Ich kann nur annehmen, dass Ihr Code aus einem Online-Tutorial stammt. In diesem Fall gute Arbeit, um es selbst herauszufinden. Andererseits ist die Tatsache, dass dieser Code tatsächlich irgendwo online veröffentlicht werden könnte, um eine Datei korrekt zu entpacken, etwas beängstigend.
PHP verfügt über integrierte Erweiterungen für den Umgang mit komprimierten Dateien. Hierfür sollten keine
system
Anrufe erforderlich sein .ZipArchive
docs ist eine Option.Wie andere kommentiert haben,
$HTTP_GET_VARS
ist es seit Version 4.1 veraltet ... was vor sehr langer Zeit war. Benutze es nicht. Verwenden$_GET
Sie stattdessen das Superglobale.Seien Sie schließlich sehr vorsichtig, wenn Sie akzeptieren, welche Eingaben über eine
$_GET
Variable an ein Skript übergeben werden .BENUTZEN SIE DEN BENUTZEREINGANG IMMER.
AKTUALISIEREN
Gemäß Ihrem Kommentar können Sie die Zip-Datei am besten in dasselbe Verzeichnis extrahieren, in dem sie sich befindet, indem Sie den festen Pfad zur Datei bestimmen und sie speziell an diesen Speicherort extrahieren. Sie könnten also Folgendes tun:
quelle
$zip->extractTo('./');
, ist dies jedoch wahrscheinlich nicht der Fall. Eine bessere Option besteht darin, den Speicherort der Zip-Datei im Dateisystem zu bestimmen und dort zu extrahieren. Ich werde meine Antwort aktualisieren, um zu demonstrieren.Fatal error: Class 'ZipArchive' not found
Fehlermeldung, dass ich dieses Skript versuche :-( Gibt es zu diesem Zeitpunkt eine Option?zlib
Bibliothek, um so ziemlich alle Komprimierungs- / Dekomprimierungsvorgänge mit PHP auszuführen. Selbst um Systemaufrufe zu tätigen, benötigen Sie die zugrunde liegende Bibliothek. Dies ist jedoch eine sehr allgegenwärtige Sache, und es ist die Ausnahme, sie nicht zu haben. Wenn Sie Shared Hosting verwenden, sollten diese es für Sie installieren. Andernfalls googeln Sie einfach etwas wie "So installieren Sie die Unterstützung für Zip-Funktionen für PHP"Bitte machen Sie es nicht so (übergeben Sie GET var, um Teil eines Systemaufrufs zu sein). Verwenden Sie stattdessen ZipArchive .
Ihr Code sollte also folgendermaßen aussehen:
Und um Ihre Frage zu beantworten, lautet Ihr Fehler "etwas $ var etwas anderes" "etwas $ var etwas anderes" (in doppelten Anführungszeichen).
quelle
Verwenden Sie
getcwd()
zum Extrahieren im selben Verzeichnisquelle
Versuchen Sie einfach, dass yourDestinationDir das Ziel ist, in das -d yourDestinationDir extrahiert oder entfernt werden soll , um es in das Stammverzeichnis zu extrahieren.
quelle
yourDestinationDir
alssession_save_path() . DIRECTORY_SEPARATOR . "$name" . DIRECTORY_SEPARATOR
wo$name
ist Zielordner zum Entpacken in Sitzungsordner verwendet.Ich habe die Antwort von @rdlowrey auf einen saubereren und besseren Code aktualisiert. Dadurch wird eine Datei mit in das aktuelle Verzeichnis entpackt
__DIR__
.quelle
PHP verfügt über eine eigene integrierte Klasse, mit der Inhalte aus einer Zip-Datei entpackt oder extrahiert werden können. Die Klasse ist ZipArchive. Unten finden Sie den einfachen und grundlegenden PHP-Code, mit dem eine Zip-Datei extrahiert und in einem bestimmten Verzeichnis abgelegt wird:
Wenn Sie einige erweiterte Funktionen wünschen, finden Sie unten den verbesserten Code, mit dem überprüft wird, ob die Zip-Datei vorhanden ist oder nicht:
Quelle: Wie entpacke oder extrahiere ich Zip-Dateien in PHP?
quelle
Ich habe die Antwort von Morteza Ziaeemehr auf einen saubereren und besseren Code aktualisiert. Dadurch wird eine im Formular bereitgestellte Datei mit DIR in das aktuelle Verzeichnis entpackt .
quelle
Nur ändern
Zu diesem
oder dieses
system("unzip {$master}.zip");
quelle
Sie können die vorgefertigte Funktion verwenden
Wie man es benutzt.
quelle
Verwenden Sie den folgenden PHP-Code mit dem Dateinamen im URL-Parameter "Name".
quelle
Einfache PHP-Funktion zum Entpacken. Bitte stellen Sie sicher, dass auf Ihrem Server eine Zip-Erweiterung installiert ist.
quelle
Verwenden Sie einfach dies:
Wenn Ihr Code
$master
als Zeichenfolge übergeben wird, sucht das System nach einer Datei mit dem Namen$master.zip
quelle
'unzip' $master
würde nur funktionieren, wenn Sie nach dem Entpacken ein Leerzeichen und nach dem einfachen Anführungszeichen einen Punkt hinzugefügt haben. Wäresystem("unzip $master.zip")
mit doppelten Anführungszeichen oder zumindest einer gültigen Antwort viel einfacher vorzuschlagen gewesen .$_GET
system