サーバー上でzipファイルをサクッと解凍unzipする方法は何種類かありますが、簡単なのは
- SSHやtelnetからコマンド操作
- 解凍用のプログラムを実行する
というような方法かなと思います。
google先生に尋ねると
shell_exec
ZipArchive
なんかを使いましょう、なんて出てきます。
以下のような感じ。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $zip_file = 'sample.zip'; // 展開するzipファイルを指定 $zip = new ZipArchive; if($zip->open("$zip_file") === TRUE) { $zip->extractTo('./'); $zip->close(); echo '成功'; } else { echo '失敗'; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $zip_file = 'sample.zip'; // 展開するzipファイルを指定 function unzip($zip_file) { return shell_exec("unzip $zip_file"); } if($zip = unzip($zip_file)) { echo "解凍成功:$zip_file"; } else { echo "解凍失敗:$zip_file"; } ?> |
でも、私はうまくできませんでした。
たぶん原因はフルパスやら相対パスを上手に操れなかったから。
そんな私でもできた解凍方法が以下。
地道ですが、以下のように解凍するのが間違いがなくて楽なんじゃないかと思います。
1 2 3 4 5 6 7 8 9 |
<?php $cmd = "cd wp-content; dir; unzip sample.zip"; exec($cmd, $arr, $res); /**以下は確認用**/ var_dump($arr); var_dump($res); ?> |
PHPでunzipしました。
exec()でphpからコマンドを実行していきます。
cd ○○;でディレクトリを移動しつつ、dir;でその先にあるファイルとフォルダをチェック。
解凍したいzipファイルがカレントディレクトリに見つかったら unzip sample.zip;コマンドで解凍を行います。
そうすると、zip圧縮ファイルのあったディレクトリに解凍ファイルが生成されます。
この方法が、ちゃんと見えてトラッキングできるから私にはわかりやすい。
コメント