Tôi chỉ có thể giả sử mã của bạn đến từ một hướng dẫn ở đâu đó trực tuyến? Trong trường hợp đó, công việc tốt cố gắng tự mình tìm ra nó. Mặt khác, thực tế là mã này thực sự có thể được xuất bản trực tuyến ở đâu đó vì cách chính xác để giải nén một tệp là một chút đáng sợ.
PHP có các phần mở rộng tích hợp để xử lý các tệp nén. Không cần phải sử dụng system
các cuộc gọi cho việc này. ZipArchive
tài liệu là một lựa chọn.
$zip = new ZipArchive;
$res = $zip->open('file.zip');
if ($res === TRUE) {
$zip->extractTo('/myzips/extract_path/');
$zip->close();
echo 'woot!';
} else {
echo 'doh!';
}
Ngoài ra, như những người khác đã nhận xét, $HTTP_GET_VARS
đã bị từ chối kể từ phiên bản 4.1 ... đã được xem xét lại từ lâu. Đừng sử dụng nó. Sử dụng $_GET
superglobal thay thế.
Cuối cùng, hãy thật cẩn thận về việc chấp nhận bất kỳ đầu vào nào được chuyển đến một tập lệnh thông qua một $_GET
biến.
LUÔN LUÔN VỆ SINH NGƯỜI DÙNG.
CẬP NHẬT
Theo nhận xét của bạn, cách tốt nhất để trích xuất tệp zip vào cùng thư mục chứa nó là xác định đường dẫn cứng đến tệp và trích xuất cụ thể đến vị trí đó. Vì vậy, bạn có thể làm:
// 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";
}