Mengekstrak Fail ZIP dengan PHP
Apabila cuba menyahzip fail menggunakan PHP, anda mungkin menghadapi kesukaran apabila menghantar nama fail melalui URL seperti yang dilihat dalam kod anda:
<?php $master = $_GET["master"]; system('unzip $master.zip'); // Incorrect syntax ?>
Membetulkan Sintaks
Isu utama terletak pada sintaks panggilan sistem(). Sintaks yang betul ialah memanggil arahan sistem seperti:
system("unzip $master.zip");
Menggunakan Fungsi PHP Terbina Dalam
Walaupun fungsi sistem() boleh menyelesaikan tugas, ia biasanya tidak disyorkan. PHP menyediakan sambungan terbina dalam untuk mengendalikan fail termampat, seperti ZipArchive. Berikut ialah contoh menggunakan ZipArchive:
<?php $zip = new ZipArchive; $res = $zip->open('file.zip'); if ($res === TRUE) { $zip->extractTo('/myzips/extract_path/'); $zip->close(); echo 'Extraction successful!'; } else { echo 'Extraction failed: ' . $zip->getStatusString(); } ?>
Pertimbangan Tambahan
Penyelesaian untuk Mengekstrak ke Direktori Semasa
Untuk mengekstrak fail ZIP ke dalam direktori yang sama di mana ia berada, anda boleh menentukan laluan mutlak ke fail dan nyatakan sebagai sasaran pengekstrakan:
<?php $file = 'file.zip'; $path = pathinfo(realpath($file), PATHINFO_DIRNAME); $zip = new ZipArchive; $res = $zip->open($file); if ($res === TRUE) { $zip->extractTo($path); $zip->close(); echo "Extraction complete!"; } else { echo "Extraction failed: " . $zip->getStatusString(); } ?>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekstrak Fail ZIP Dengan Selamat dan Cekap Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!