Posso solo supporre che il tuo codice provenga da un tutorial da qualche parte online? In tal caso, buon lavoro cercando di capirlo da solo. D'altra parte, il fatto che questo codice possa effettivamente essere pubblicato online da qualche parte come il modo corretto per decomprimere un file è un po 'spaventoso.
PHP ha estensioni incorporate per la gestione di file compressi. Non dovrebbe essere necessario utilizzare le chiamate system
per questo. ZipArchive
docs è un'opzione.
$zip = new ZipArchive;
$res = $zip->open('file.zip');
if ($res === TRUE) {
$zip->extractTo('/myzips/extract_path/');
$zip->close();
echo 'woot!';
} else {
echo 'doh!';
}
Inoltre, come altri hanno già detto, $HTTP_GET_VARS
è stato deprecato dalla versione 4.1 ... che era un reeeeeally molto tempo fa. Non usarlo Utilizzare invece il superglobale $_GET
.
Infine, prestare molta attenzione all'accettazione di qualsiasi input passato a uno script tramite una variabile $_GET
.
SANIFICARE SEMPRE L'INGRESSO UTENTE.
UPDATE
Come per il commento, il modo migliore per estrarre il file zip nella stessa directory in cui si trova è quello di determinare il percorso difficile il file ed estrarlo in particolare a quella Posizione. Quindi, si potrebbe fare: risposta
// 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";
}
Le doppie virgolette valutano le variabili; le virgolette singole no. MA - fai attenzione, il semplice passaggio di qualche input a una chiamata di sistema potrebbe essere piuttosto pericoloso. – Wiseguy
Devo dire che non mi piace il tono ostile di alcuni commenti. Se voi ragazzi comprendete che lei/lui è scomparso, allora ditelo/lui. Ci manca qualcosa a un certo punto. –
L'errore qui è semplice. Stai tentando di utilizzare l'interpolazione delle stringhe con citazioni semplici invece di virgolette doppie.L'interpolazione delle stringhe non funziona con le virgolette semplici perché è usata per i valori letterali delle stringhe. Quindi, cambiando il tuo codice in 'system (" decomprimi $ master.zip ");' dovrebbe funzionare. –