レンタルサーバー上でzipファイルを解凍するには
大量のファイルをアップロードする際、zipしてサーバ上で展開できればどんなに楽か。
さくらサーバのように、シェルが使えるサーバなら何も問題ないが、多くの格安サーバではシェルは開放されていない。でも、単にunzipを走らせればいいだけなので、何とかやりようはありそうなもの。
と思って探すとやっぱりあった。
サーバ上でZIP展開
http://www.cubic4.net/blog/34-site/68-server-unzip.html
手法としては、PHPでunzipを起動するというもの。
ここからunzip.zipをダウンロードして、展開すると、unzip.phpというスクリプトが出てくる。
この中で、先頭の方にある、
<?php
// インストールに先立ってZIPファイルをサーバー上で展開するスクリプト。
// ZIPファイルとこのファイルを同じディレクトリにアップ。
// アップ先ディレクトリにそのまま展開されます。
// 展開される際にこのファイルと同じ名前のファイルが有る場合は予めこのファイル名を変えておく。
$zipfilename = 'filename.zip'; // 展開するzipファイルを指定。
の最後の部分で目的の展開すべきzipファイルを指定しておく。
例えばこんな感じで(wordpress-3.0-ja.zipの場合)。
$zipfilename = 'wordpress-3.0-ja.zip'; // 展開するzipファイルを指定。
この準備ができたら、このunzip.phpと目的のzipファイル(wordpress-3.0-ja.zip)をサーバにアップロードする。
あとは、Webブラウザでこのunzip.phpをアクセスすればOK。
http://www.example.com/unzip.php
てな感じ。実に簡単。
最後に、unzip.phpとzipファイルを削除。これをやっとかないと、間違えて再アクセスするとまた展開(上書き)してしまう。
なお、エックスサーバーの場合は、スクリプトの一部を書き換えないと上手く動かなかった。具体的には、内部で起動するunzipをフルパス(/usr/bin/unzip)にする。
これ
function unzip($zip_file){
return shell_exec("unzip $zip_file");
}
を
function unzip($zip_file){
return shell_exec("/usr/bin/unzip $zip_file");
}
こうする。
スクリプトを作ってくださった方に感謝。
参考: エックスサーバーのコマンドパス一覧
http://www.xserver.ne.jp/man_program_soft.php
ディスカッション
コメント一覧
初めまして
unzipのパスはphpのバージョンの違いでしょうか?
うちもエックスサーバですがphp5ではあれで動いてます。
わざわざコメントありがとうございます。
こちらもPHP 5です。
どうしても動いてくれなくて悩んだ挙句、
パスが通っていないんじゃないかと
unzipをフルパスで試したら動いたという次第です。
同じエックスサーバーでも
個々のサーバごとに微妙に設定が違うのかもしれません。
はっきりしたことは言えませんが。
使用方法記載有難うございます。
スクリプトを公開している元サイトでは、unzipファイルをそのまま上げるような事しか書いておらず、使用方法がわからず困っておりました。
解凍した、phpファイルを使用するんですね。 たしかにzipファイルだと接続してもDLするか、開くかしか選べませんもんね。
無事unzip出来ました。
助かりました、有難うございます。
役に立ったようでよかったです。
サーバー上で展開するとものすごく楽です。
もう、いちいちアップロードなんてやってられなくなります。
困っていたので、大変助かりました。
記事にさせて頂いたのでお礼を兼ねてご報告です。
宜しくお願いします。
役に立ったとのこと、嬉しく思います。
ピンバック & トラックバック一覧
[…] サーバー上でのzipファイル解凍方法はこちら […]
[…] サーバー上でのzipファイル解凍方法はこちら […]
[…] PCテクニック集:【PHP】サーバー上でzipを解凍する方法 レンタルサーバー上でzipファイルを解凍するには | a weblog by k1 の記事で紹介されているソースを合体させました。 2013/10:PHPで圧縮 […]