Mogę tylko założyć, że Twój kod pochodzi z samouczka w Internecie? W takim razie dobra robota próbuje to samemu rozwiązać. Z drugiej strony fakt, że ten kod może być gdzieś opublikowany online jako właściwy sposób rozpakowania pliku, jest nieco przerażający.
PHP ma wbudowane rozszerzenia do obsługi skompresowanych plików. W tym celu nie powinno być potrzeby korzystania z system
połączeń. ZipArchive
Dokumenty to jedna z opcji.
$zip = new ZipArchive;
$res = $zip->open('file.zip');
if ($res === TRUE) {
$zip->extractTo('/myzips/extract_path/');
$zip->close();
echo 'woot!';
} else {
echo 'doh!';
}
Ponadto, jak skomentowali inni, $HTTP_GET_VARS
jest on przestarzały od wersji 4.1 ... która była naprawdę dawno temu. Nie używaj tego. $_GET
Zamiast tego użyj superglobalu.
Wreszcie, bądź bardzo ostrożny przy akceptowaniu wszelkich danych wejściowych przekazywanych do skryptu przez $_GET
zmienną.
ZAWSZE ODCZYTAJ WEJŚCIE UŻYTKOWNIKA.
AKTUALIZACJA
Zgodnie z komentarzem najlepszym sposobem na wyodrębnienie pliku zip do tego samego katalogu, w którym się znajduje, jest określenie twardej ścieżki do pliku i wyodrębnienie go konkretnie do tej lokalizacji. Więc możesz zrobić:
// assuming file.zip is in the same directory as the executing script.
$file = 'file.zip';
// get the absolute path to $file
$path = pathinfo(realpath($file), PATHINFO_DIRNAME);
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
// extract it to the path we determined above
$zip->extractTo($path);
$zip->close();
echo "WOOT! $file extracted to $path";
} else {
echo "Doh! I couldn't open $file";
}
system("unzip $master.zip");
powinna działać.