Kodunuzun çevrimiçi bir yerde bir öğreticiden geldiğini varsayabilir miyim? Bu durumda, bunu kendiniz anlamaya çalışmak iyi bir iş. Öte yandan, bu kodun bir dosyayı çevrimiçi olarak açmanın doğru yolu olarak çevrimiçi bir yerde yayınlanabilmesi biraz korkutucu.
PHP, sıkıştırılmış dosyalarla uğraşmak için yerleşik uzantılara sahiptir. Bunun için system
çağrı kullanmaya gerek yoktur . ZipArchive
docs bir seçenektir.
$zip = new ZipArchive;
$res = $zip->open('file.zip');
if ($res === TRUE) {
$zip->extractTo('/myzips/extract_path/');
$zip->close();
echo 'woot!';
} else {
echo 'doh!';
}
Ayrıca, diğerlerinin de yorumladığı gibi, $HTTP_GET_VARS
4.1'den beri uzun süredir kullanımdan kaldırıldı. Kullanma. Kullanım $_GET
yerine süper küreselini.
Son olarak, bir komut dosyasına bir $_GET
değişken aracılığıyla hangi girdilerin aktarıldığını kabul etmek konusunda çok dikkatli olun .
HER ZAMAN KULLANICI GİRİŞİNİ DÜZELTİN.
GÜNCELLEME
Yorumunuza göre, zip dosyasını içinde bulunduğu aynı dizine çıkarmanın en iyi yolu, dosyanın sabit yolunu belirlemek ve özellikle o konuma ayıklamaktır. Böylece şunları yapabilirsiniz:
// 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";
}