ZIP形式でアップロードしたファイルをサーバー上で展開する方法

プログラミング言語PHP

FTPを使用して大量のファイルや階層の深いフォルダをアップロードすると、ものすごく時間がかかったりわけのわからないエラーが出たりで何かと面倒だったりしないでしょうか。

WordPressのテーマやプラグイン程度のファイルなら特に問題無いかもしれませんが、CMSのインストーラなどは10MBを超える事も珍しくないので、cPanelのようにアーカイブファイル(ここではいわゆるZIP形式のファイルの事を指しています)のままアップロードしてファイルマネージャーで展開出来ると簡単で速いんですよね。と言うか、一度これに慣れてしまうともうFTPは使う気になれないくらい快適なんですが…

そんなわけで当エントリーではFTPクライアント、またはWebFTPを利用するしかないレンタルサーバーでZIP形式のファイルを展開する方法を紹介したいと思います。

利用可能なレンタルサーバー

基本的にはどのレンタルサーバーでもOKですが、PHPが利用可能な事が必須条件になります。HTMLサーバーではこの方法は使用出来ないのであらかじめご了承下さい。

ZIP展開用のPHPファイルを作成

まずはテキストファイルに以下の内容をそのままコピペします。

ZIPファイル展開用
<?php

$zip = new ZipArchive();

if ($zip->open('./@ファイル名@.zip') === true) {
	if ($zip->extractTo('./') === true) {
		$zip->close();
	} else {
		exit('Extract Error');
	}
} else {
	exit('Open Error');
}

echo 'Unzip Complete';

?>

@ファイル名@の部分を展開したいファイル名に編集します。

コードのコピペと展開するファイル名の編集が済んだら、このテキストファイルに名前をつけて保存しましょう。ファイル名は好きにしていただいて構いませんが、ここではunzip.phpとしておきます。

ファイルのアップロードとPHPの実行

展開するZIPファイルと同じ場所にunzip.phpをアップロードして、アップロードが済んだらブラウザからunzip.phpを実行します。

私がテストに使用した無料レンタルサーバーではルートにアップロードした場合、以下のようなURLになりますのでご参考までに。

XFREE(旧Xdomain)PHP・MySQLサーバー
@アカウント名@.php.xdomain.jp/unzip.php
スターサーバーフリー(旧ウェブクロウ)フリー PHP+MySQLプラン
@アカウント名@.webcrow.jp/unzip.php

よほど巨大なファイルで無い限り「もう終わったの?」というくらい一瞬で終わります。この時、画面左上に以下の何れかのメッセージが表示されているはずです。

メッセージ 意味・原因
Unzip Complete 正常に展開処理が完了。
Open Error 展開するZIPファイルが開けない。
ZIPファイルが正常にアップロードされていないか、ZIPファイル名を間違えて記述している。ZIPファイルが壊れている場合にもこのエラーになるかも?
Extract Error 展開処理中に何らかのエラーが発生。
まずこのエラーが出る事は無いと思いますが、私の知識では意図的に発生させる事も原因も特定不能です…申し訳ない。

Unzip Completeが表示されたら無事に展開されたと思っていいでしょう。あとはアップロードしたZIPファイルとunzip.phpを削除すれば作業は終了です。

サーバー上でZIPファイルを展開する方法でした

私が試した限りでは問題なく動作する事を確認していますが、レンタルサーバーや設定によっては巧くいかない場合もあるかもしれません。その時はごめんなさいという事でひとつご容赦を。

この方法はPHPが利用可能なサーバーでしか使えないのが難点ですが、FTPを利用した通常のアップロードと比べてかなり快適になると思いますのでお役に立てば幸いです。