PHP 階層構造 維持 ディレクトリ
現在指定したディレクトリを中にあるサブディレクトリやファイルを丸ごと階層構造を維持したまま圧縮したいのですが、うまくいきません下記のサイトを参考にしましたがエラーが出てしまいます。例外処理らしいのですが、ドキュメントを読んでもエラーの内容がうまく理解ができません
よろしくお願いします。
http://php-archive.net/php/zip-directory/
エラー文
Fatal error: Uncaught Error: Call to undefined function zipDirectory() in C:\MAMP\htdocs\upload\upload-file.php:134 Stack trace: #0 {main} thrown in C:\MAMP\htdocs\upload\upload-file.php on line 134
コード
define("file_zone","C:/MAMP/htdocs/upload/test/");
if(isset($_POST["download"])){
// 圧縮するディレクトリー
$dir = dirname(__FILE__) . '/test/';
// Zipファイルの保存先
$file = dirname(__FILE__);
zipDirectory($dir, $file);
// ディレクトリを圧縮する
function zipDirectory($dir, $file, $root=""){
$zip = new ZipArchive();
$res = $zip->open($file, ZipArchive::CREATE);
if($res){
// $rootが指定されていればその名前のフォルダにファイルをまとめる
if($root != "") {
$zip->addEmptyDir($root);
$root .= DIRECTORY_SEPARATOR;
}
$baseLen = mb_strlen($dir);
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
$dir,
FilesystemIterator::SKIP_DOTS
|FilesystemIterator::KEY_AS_PATHNAME
|FilesystemIterator::CURRENT_AS_FILEINFO
), RecursiveIteratorIterator::SELF_FIRST
);
$list = array();
foreach($iterator as $pathname => $info){
$localpath = $root . mb_substr($pathname, $baseLen);
if( $info->isFile() ){
$zip->addFile($pathname, $localpath);
} else {
$res = $zip->addEmptyDir($localpath);
}
}
$zip->close();
} else {
return false;
}
}
}
お礼
ありがとうございます。 無事復旧できました。 こちらの機能こそ求めていたものです。 今まで使っていた復元ソフトよりこちらのソフトは使いやすかったです。