Linuxコマンドzipでフォルダを圧縮しダウンロード : PHP

Pocket

Linuxコマンドzipで圧縮したフォルダをダウンロードするPHPの処理メモ。

ディレクトリ構造

example
|
|-- target  <- 圧縮対象
    |
    |.. ファイル

PHP

// zipファイル名
$fileName = 'myfile.zip';
/*
 * zipコマンド
 * 
 * 1. ディレクトリ移動
 * 2. ファイル圧縮
 */ 
 $dir = '/path/to/example';       // exampleへのパス
 $command =  'cd ' . $dir . ';' . // exampleディレクトリへ移動
        'zip -r '. $fileName . ' ./target/'; // targetディレクトリを圧縮しmyfile.zipを作成
exec($command);  // コマンド実行
// zipファイルパス
$zipPath = $dir . '/' . $fileName;
// zip出力
header( "Content-Type: application/zip" );
header( "Content-Disposition: attachment; filename=" . basename( $zipPath ) );
header( "Content-Length: " . filesize( $zipPath ) );
ob_clean();
flush();
readfile( $zipPath );
// Zipファイル削除
unlink( $zipPath );
exit( 0 );

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。