File: /home/corofmbe/public_html/unzip.php
<?php
// 1. Matikan batasan waktu dan tingkatkan memori (Sangat penting untuk file WP!)
ini_set('max_execution_time', 0); // 0 = unlimited time
ini_set('memory_limit', '512M'); // Tingkatkan alokasi RAM
error_reporting(E_ALL);
ini_set('display_errors', 1);
$file_zip = 'master.zip';
$path_tujuan = './';
// 2. Cek apakah file benar-benar ada
if (!file_exists($file_zip)) {
die("Error: File $file_zip tidak ditemukan di direktori ini!");
}
// 3. Pastikan folder tujuan bisa ditulisi (writable)
if (!is_writable($path_tujuan)) {
die("Error: Folder tujuan ($path_tujuan) tidak memiliki permission untuk ditulisi (cek CHMOD).");
}
$zip = new ZipArchive;
$buka = $zip->open($file_zip);
if ($buka === TRUE) {
// 4. Hitung jumlah file sebelum ekstrak untuk validasi
$total_file_di_zip = $zip->numFiles;
echo "Memulai ekstraksi... Menemukan <b>$total_file_di_zip</b> file di dalam archive.<br><br>";
// 5. Eksekusi
if ($zip->extractTo($path_tujuan)) {
echo "<span style='color:green;'><b>Sukses Solid!</b></span> Seluruh file berhasil di-extract ke $path_tujuan.";
} else {
echo "<span style='color:red;'><b>Gagal parsial.</b></span> Proses extractTo() terhenti. Biasanya ini murni karena masalah File Permission/Ownership pada folder spesifik di dalam direktori tujuan.";
}
$zip->close();
} else {
// 6. Terjemahkan kode error ZIP agar mudah dipahami
$pesan_error = "Gagal membuka file. ";
switch($buka) {
case ZipArchive::ER_NOENT: $pesan_error .= "File tidak ditemukan."; break;
case ZipArchive::ER_INCONS: $pesan_error .= "File Zip rusak atau tidak konsisten."; break;
case ZipArchive::ER_MEMORY: $pesan_error .= "Memori server tidak cukup."; break;
case ZipArchive::ER_NOZIP: $pesan_error .= "Ini bukan file arsip ZIP yang valid."; break;
case ZipArchive::ER_OPEN: $pesan_error .= "Tidak bisa membuka file (kemungkinan dilarang oleh server)."; break;
case ZipArchive::ER_READ: $pesan_error .= "Gagal membaca isi file."; break;
default: $pesan_error .= "Kode Error Internal: $buka"; break;
}
echo "<span style='color:red;'>$pesan_error</span>";
}
?>