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

CodeIgniter 內建 Zip 壓縮類完整使用指南與自動載入配置

     編輯:PHP 相關知識

CodeIgniter 內建 Zip 類提供零依賴的目錄打包下載功能,本文說明載入方式、核心方法與自動載入配置技巧。

手動載入與自動載入兩種模式

控制器內手動載入

<?php
$this->load->library('zip'); // 載入 Zip 類
?>

config/autoload.php 全域自動載入(推薦)

<?php
$autoload['libraries'] = array('zip', 'database', 'session'); // 加入 zip
?>

⚠️ 若出現「Call to undefined method」錯誤,90% 是自動載入未生效,請檢查 autoload.php 並重啟服務驗證。

核心方法速查表

方法說明參數
read_dir($path, $preserve_dirs = true)遞迴讀取目錄加入壓縮包$preserve_dirs=false 可扁平化結構
download($filename)輸出壓縮檔供瀏覽器下載自動送出 Content-Disposition header
archive($filepath)儲存壓縮檔到伺服器路徑需確保目錄可寫入

實戰範例:打包網站根目錄供下載備份

<?php
class Backup extends CI_Controller {
    public function download_full_site() {
        $this->load->library('zip');
        $rootPath = $_SERVER['DOCUMENT_ROOT']; // 目標目錄
        
        // FALSE 表示不保留絕對路徑結構,避免解壓時路徑過深
        $this->zip->read_dir($rootPath, FALSE); 
        
        // 直接觸發瀏覽器下載
        $this->zip->download('my_backup_' . date('Ymd_His') . '.zip');
    }
}
?>

進階技巧與注意事項

  • 記憶體限制:大目錄打包易觸發 memory_limit,建議分批處理或調大 php.ini 設定。
  • 排除特定檔案:read_dir() 不支援排除規則,需自行遍歷 RecursiveDirectoryIterator 過濾後用 add_data() 逐個加入。
  • 權限問題:確保 PHP 進程對目標目錄有讀取權限,對輸出目錄有寫入權限(使用 archive() 時)。

善用 CI 內建 Zip 類,快速實現備份下載、資料匯出等常見需求,無需額外 Composer 套件。

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