SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

ZIP形式圧縮ファイルをphpで作成する

「Linuxのzipコマンドでzipファイルが作れます」という話です。
Linuxのコマンドになじみがあれば、すぐできる簡単な方法。

zipコマンドが使えない場合の方が少ないと思いますが、もしzipコマンドがなかったら、
yum install zip などでさくっとインストールします(CentOSの場合)。

zipコマンドが使えたら、phpではこのように書くだけ。

//この中にファイルを全部入れておく。サブディレクトリなどあってもOK
$tempDir = "作業用ディレクトリ";
//ここにzipファイルを作ります
$filepath = "生成するzipファイルのパス";
//こんなコマンドを
$command = 'cd ' . $tempDir . '; zip -r ' . $filepath . ' .';
//実行します
exec($command);

実行しているコマンドは、セミコロン(;)でつないだ2つのコマンド。
「cd で作業用ディレクトリに移動して、zip -r で カレントディレクトリ以下を全部zipに圧縮する」ということをしています。

作業用ディレクトリに移動しないとどうなるかは、興味があったらお試しあれ。
(不要な階層構造がzipの中にできたり。。。)

● Windowsサーバだったら?
標準のコマンドでzipファイルは作れないらしいので、cab形式が簡単そう。
コマンドラインで動作するソフトを利用するなどの手段で zip形式やlzh形式もたぶん作れます。

phpだけに依存する方法なら、zip形式圧縮ファイルの読み書きができるライブラリがいろいろあるので、使いやすそうなのを探して試してみるのもよいと思います(手抜きスミマセン)

関連するメモ

コメント