首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 解壓縮 RAR 與 ZIP 檔案完整指南

     編輯:PHP 綜合知識

ZIP:內建 ZipArchive 類別

$zip = new ZipArchive;
if ($zip->open('file.zip') === true) {
    $zip->extractTo('/target/dir/');
    $zip->close();
    echo '解壓完成';
} else {
    echo '無法開啟 ZIP';
}

RAR:需安裝 PECL rar 擴充套件

安裝步驟 (Linux)

# 1. 安裝開發套件
sudo apt-get install php-dev libunrar-dev

# 2. PECL 安裝
sudo pecl install rar

# 3. 啟用擴充套件
echo "extension=rar.so" | sudo tee /etc/php/8.1/mods-available/rar.ini
sudo phpenmod rar
sudo systemctl restart php8.1-fpm

Windows

至 PECL 下載對應 PHP 版本、VC、TS/NTS 的 php_rar.dll,放入 ext 目錄,php.ini 加入 extension=php_rar.dll,重啟服務。

RAR 解壓程式碼

function extractRar($rarPath, $destDir) {
    $rar = rar_open($rarPath) or die('無法開啟 RAR');
    $list = rar_list($rar) or die('無法取得列表');

    foreach ($list as $entry) {
        // $entry 為 RarEntry 物件
        $entry->extract($destDir);
    }
    rar_close($rar);
}

// 使用
extractRar('upload/archives/data.rar', 'upload/extracted/');

常見問題

  • 權限不足:確保 PHP 進程對目標目錄有寫入權限。
  • 大檔案記憶體:RAR 解壓可能佔用大量記憶體,調大 memory_limit。
  • 加密壓縮檔:rar_open($path, $password) 第二參數傳入密碼。
  • 編碼問題:檔名含中文時,可能需 iconv('utf-8', 'gbk', $filename) 轉碼(視系統語系)。

替代方案:系統指令

// Linux
exec('unzip -o file.zip -d /target/dir 2>&1', $out, $ret);
exec('unrar x file.rar /target/dir 2>&1', $out, $ret);
// 需確認伺服器安裝 unzip/unrar 且 PHP 未禁用 exec()

生產環境建議優先使用 PHP 擴充套件,避免指令注入風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved