ZipArchive 是PHP 提供的一個擴展庫,用於操作ZIP 格式的壓縮文件。通過它,我們可以創建、讀取、更新甚至修改壓縮包中文件的屬性,如文件權限和修改時間等。
在操作之前,首先需要實例化一個ZipArchive對象,並加載目標ZIP 文件:
$zip = new ZipArchive();
$zip->open('example.zip');
可以使用statIndex()方法獲取壓縮包中某個文件的詳細屬性信息,如文件名、原始大小、修改時間和權限:
$fileIndex = 0; // 假設目標文件在壓縮包中的第一個索引位置
$fileInfo = $zip->statIndex($fileIndex);
echo "文件名: " . $fileInfo['name'] . "\n";
echo "壓縮前的文件大小: " . $fileInfo['size'] . " 位元組\n";
echo "最後修改時間: " . date('Y-m-d H:i:s', $fileInfo['mtime']) . "\n";
echo "權限: " . $fileInfo['external'] . "\n";
使用setExternalAttributesIndex()方法可以修改壓縮包中文件的屬性,包括權限和修改時間。以下是具體的操作方式:
$newPermissions = 0777; // 设置为最高權限
$newModifiedTime = time(); // 設置為當前時間
$zip->setExternalAttributesIndex($fileIndex, ($newPermissions << 16) | ($newModifiedTime & 0xFFFF));
// 再次驗證屬性修改是否生效
$fileInfo = $zip->statIndex($fileIndex);
echo "修改后的文件權限: " . $fileInfo['external'] . "\n";
echo "修改后的最後修改時間: " . date('Y-m-d H:i:s', $fileInfo['mtime']) . "\n";
完成屬性修改後,記得調用close()方法來保存更改並釋放資源:
$zip->close();
借助PHP 的ZipArchive 擴展,我們可以便捷地對ZIP 壓縮包中文件進行屬性修改,包括讀取和設置文件權限、最後修改時間等關鍵元數據。通過statIndex讀取原始屬性,使用setExternalAttributesIndex更新信息,配合close完成保存,就可以輕鬆完成壓縮文件的操作任務。