フォルダー内にあるすべてのサブフォルダーを含むフォルダーのコンテンツを圧縮するソリューションを探していますが、メインフォルダー自体は圧縮しません。
フォルダー全体をzipアーカイブに追加するこの機能から始めました
function addFolderToZip($dir, $zipArchive){
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
//Add the directory
$zipArchive->addEmptyDir($dir);
// Loop through all the files
while (($file = readdir($dh)) !== false) {
//If it's a folder, run the function again!
if(!is_file($dir . $file)){
// Skip parent and root directories
if( ($file !== ".") && ($file !== "..")){
addFolderToZip($dir . $file . "/", $zipArchive);
}
}else{
// Add the files
$zipArchive->addFile($dir . $file);
}
}
}
}
}
しかし、関数を次のように変更する方法がわかりません(おそらく3番目の引数を使用しますか?)
$z = new ZipArchive();
$z->open("zips/new.zip", ZIPARCHIVE::CREATE);
addFolderToZip("unzipped/",$z);
$z->close();