/** * tarアーカイブを解凍する. * * @param string $path アーカイブパス * @return string Archive_Tar::extractModify()のエラー */ function unpackFile($path) { // 圧縮フラグTRUEはgzip解凍をおこなう $tar = new Archive_Tar($path, true); $dir = dirname($path); $file_name = basename($path); // 拡張子を切り取る $unpacking_name = preg_replace("/(\\.tar|\\.tar\\.gz)\$/", "", $file_name); // 指定されたフォルダ内に解凍する $tar->extractModify($dir . "/", $unpacking_name); GC_Utils_Ex::gfPrintLog("解凍:" . $dir . "/" . $file_name . "->" . $dir . "/" . $unpacking_name); // フォルダ削除 SC_Utils::sfDelFile($dir . "/" . $unpacking_name); // 圧縮ファイル削除 unlink($path); }
function sfDelFile($dir) { if (file_exists($dir)) { $dh = opendir($dir); // フォルダ内のファイルを削除 while ($file = readdir($dh)) { if ($file == "." or $file == "..") { continue; } $del_file = $dir . "/" . $file; if (is_file($del_file)) { $ret = unlink($dir . "/" . $file); } else { if (is_dir($del_file)) { $ret = SC_Utils::sfDelFile($del_file); } } if (!$ret) { return $ret; } } // 閉じる closedir($dh); // フォルダを削除 return rmdir($dir); } }