Linuxのコマンドになじみがあれば、すぐできちゃう簡単な方法。 (zipコマンドが使えない場合の方が少ないでしょう) //この中にファイルを全部入れておく。サブディレクトリなどあってもOK $tempDir = 作業用ディレクトリ; //ここにzipファイルを作ります $filepath = 生成するzipファイルのパス; //このコマンドを $command = 'cd ' . $tempDir . '; zip -r ' . $filepath . ' .'; //実行します exec($command); 実行しているコマンドは、セミコロン(;)でつないだ2つのコマンド。 「作業用ディレクトリに移動して、そこから下を全部zipに圧縮する」ということをしています。 作業用ディレクトリに移動しないとどうなるかは、興味があったらお試しあれ。(不要な階層構造がzipの中にできちゃって。。。