Saya ingin membuka zip file dan ini berfungsi dengan baik
system('unzip File.zip');
Tapi saya harus memasukkan nama file melalui URL dan tidak bisa membuatnya berfungsi, inilah yang saya miliki.
$master = $_GET["master"];
system('unzip $master.zip');
Apa yang saya lewatkan? Saya tahu itu pasti sesuatu yang kecil dan bodoh yang saya hadapi.
Terima kasih,
system("unzip $master.zip");
harus bekerja.Jawaban:
Saya hanya dapat menganggap kode Anda berasal dari tutorial di suatu tempat online? Dalam hal itu, pekerjaan yang baik berusaha mencari tahu sendiri. Di sisi lain, fakta bahwa kode ini sebenarnya dapat dipublikasikan secara online di suatu tempat karena cara yang benar untuk meng-unzip file agak menakutkan.
PHP memiliki ekstensi bawaan untuk menangani file terkompresi. Seharusnya tidak perlu menggunakan
system
panggilan untuk ini.ZipArchive
docs adalah salah satu opsi.Juga, seperti komentar orang lain,
$HTTP_GET_VARS
sudah tidak digunakan lagi sejak versi 4.1 ... yang sudah lama sekali. Jangan gunakan itu. Gunakan$_GET
superglobal sebagai gantinya.Akhirnya, berhati-hatilah dalam menerima input apa pun yang diteruskan ke skrip melalui
$_GET
variabel.SELALU MENG Sanitasi INPUT PENGGUNA.
MEMPERBARUI
Sesuai komentar Anda, cara terbaik untuk mengekstrak file zip ke direktori yang sama di mana ia berada adalah untuk menentukan jalur keras ke file dan mengekstraknya secara khusus ke lokasi itu. Jadi, Anda bisa melakukan:
sumber
$zip->extractTo('./');
Namun, ini mungkin tidak terjadi. Pilihan yang lebih baik adalah menentukan lokasi file zip di sistem file dan mengekstraknya di sana. Saya akan memperbarui jawaban saya untuk menunjukkan.Fatal error: Class 'ZipArchive' not found
kesalahan yang saya coba skrip ini :-( Apakah ada opsi pada saat itu?zlib
pustaka yang mendasari untuk melakukan hampir semua operasi kompres / dekompresi dengan PHP. Bahkan untuk membuat panggilan sistem Anda harus memiliki pustaka yang mendasarinya. Ini adalah hal yang sangat di mana-mana, dan tidak memilikinya adalah pengecualian. Jika Anda menggunakan hosting bersama, mereka harus menginstalnya untuk Anda. Kalau tidak, hanya google sesuatu seperti "Bagaimana Cara Menginstal Dukungan Fungsi Zip Untuk PHP"Tolong, jangan lakukan itu seperti itu (melewati GET var untuk menjadi bagian dari panggilan sistem). Gunakan ZipArchive sebagai gantinya.
Jadi, kode Anda akan terlihat seperti:
Dan untuk menjawab pertanyaan Anda, kesalahan Anda adalah 'sesuatu $ var sesuatu yang lain' harus menjadi "sesuatu $ var sesuatu yang lain" (dalam tanda kutip ganda).
sumber
Menggunakan
getcwd()
untuk mengekstrak di direktori yang samasumber
Cukup coba thisDestinationDir Anda adalah tujuan untuk mengekstrak atau menghapus -d yourDestinationDir untuk mengekstrak ke dir root.
sumber
yourDestinationDir
sebagaisession_save_path() . DIRECTORY_SEPARATOR . "$name" . DIRECTORY_SEPARATOR
tempat$name
folder target untuk unzip di folder sesi.Saya memperbarui jawaban @rdlowrey ke kode yang lebih bersih dan lebih baik, Ini akan membuka zip file ke direktori saat ini menggunakan
__DIR__
.sumber
PHP memiliki kelas inbuilt sendiri yang dapat digunakan untuk unzip atau mengekstrak konten dari file zip. Kelasnya adalah ZipArchive. Di bawah ini adalah kode PHP sederhana dan dasar yang akan mengekstrak file zip dan menempatkannya di direktori tertentu:
Jika Anda menginginkan beberapa fitur lanjutan maka di bawah ini adalah kode yang disempurnakan yang akan memeriksa apakah file zip ada atau tidak:
Sumber: Bagaimana cara unzip atau mengekstrak file zip dalam PHP?
sumber
Saya memperbarui jawaban Morteza Ziaeemehr ke kode yang lebih bersih dan lebih baik, Ini akan membuka zip file yang disediakan dalam bentuk ke direktori saat ini menggunakan DIR .
sumber
Ubah saja
Untuk yang ini
atau yang ini
system("unzip {$master}.zip");
sumber
Anda dapat menggunakan fungsi prepacked
Bagaimana cara menggunakannya.
sumber
Gunakan kode PHP di bawah ini, dengan nama file di URL param "nama"
sumber
Fungsi PHP sederhana untuk unzip. Pastikan Anda memiliki ekstensi zip yang diinstal di server Anda.
sumber
Gunakan ini saja:
dalam kode Anda
$master
diteruskan sebagai string, sistem akan mencari file bernama$master.zip
sumber
'unzip' $master
tidak akan berfungsi kecuali jika Anda menambahkan spasi setelah unzip dan menambahkan periode setelah kutipan tunggal. Akan jauh lebih mudah untuk menyarankansystem("unzip $master.zip")
dengan tanda kutip ganda, atau setidaknya jawaban yang valid.$_GET
string kueri ini dan menyuntikkan kode mereka sendiri kesystem
panggilan