サーバー上の、ある特定のフォルダーのファイルを一瞬でzipファイルへ圧縮・解凍するプログラムです。
wordressなどをインストールしているフォルダーには何千というファイル群がありますが、それらをFTPでダウンロードしようとすると、途中で接続が切れたりして、また最初からやり直しをするはめになったことはありませんか?
そう言ったトラブルを無くす場合に役立つプログラムです。
圧縮
例えば、
http://hoge.jp/wp/
というフォルダーのファイル群全てを
http://hoge.jp/wp/zip/a.zip
として圧縮する場合に役立ちます。
※以下のコードではzipフォルダーは、予め作成しておく必要があります。また、文字コードはutf8で保存、ファイル名は zip.php にして下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?php //圧縮保存するファイル名。a.zipなどとなる。 $name = "a"; // このフォルダ以下のファイルを圧縮します。最後に / $this_file_path = __FILE__; $this_file_path = preg_replace('@zip/zip.php@s','',$this_file_path); $tempDir = "$this_file_path"; /////////////////////////////////設定ここまで // このフォルダにzipファイルを作ります。zipフォルダーは予め作成する必要有り。最後に / $filepath = $tempDir . "zip/"; // コマンド // cd:ディレクトリの移動 // zip:zipファイルの作成 -Pオプションでパスワードを設定 $command = "cd " . $tempDir . "; zip -r ".$filepath.$name.".zip ."; // 実行します exec($command); header("Content-type: text/html; charset=utf-8"); print<<<EOD 実行ファイルへのフルパス: EOD; echo __FILE__ ; print<<<EOD <br /> 完了 EOD; ?> |
上のコードのファイルを
http://hoge.jp/wp/zip/
へアップロードし(?http://hoge.jp/wp/zip/zip.php という状態 )、実行してください。すると、zipファイルが作成されます。
解凍
圧縮ファイルを解凍したいフォルダーへアップロードします。例えば
http://hogeb.jp/x/
に解凍したければ、そのフォルダーへ、さっき作った a.zip をアップロードします。そして、以下のコードのファイルも同じフォルダーへアップロードします。
※unzip.php などというファイル名で保存して下さい。文字コードは、utf8にして下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php $zipfilename = 'a.zip'; // 展開するzipファイルを指定。 $zip_file = getcwd().'/'.$zipfilename; if(!is_file($zip_file)){ header("Content-type: text/html; charset=utf-8"); print<<<EOD {$zip_file}がサーバー上にありません。 EOD; exit; } if($zip = unzip($zip_file)){ header("Content-type: text/html; charset=utf-8"); print<<<EOD <p>{$zipfilename}は正常に解凍されました。</p> EOD; }else{ header("Content-type: text/html; charset=utf-8"); print<<<EOD <p style="color:red;">{$zipfilename}が解凍出来ませんでした。</p> EOD; } function unzip($zip_file){ return shell_exec("unzip $zip_file"); } ?> |
?http://hogeb.jp/x/
に、 a.zip と unzip.php が存在していると思います。その状態で、 unzip.php を実行して下さい。a.zip が解凍されます。