獣は月夜に何を見る...

【技術メモ】レンタルサーバーで圧縮(.zip)ファイルを解凍する方法

f:id:tukumosanzou:20181022080149j:plain

レンタルサーバーでブログ・ウェブサイトを運用していると、ファイルの追加や更新が必ず発生します。


そんな時、FTPソフト等でファイルをアップロードしますが、ファイルが一つ二つなら問題ないですが、たくさんあった場合なんかに一度ではアップロードしきれないことがあります。


わたしも、先日FilezZlla(Mac版)でアプロードできずに、Cyberduck(Mac専用)でなんとかアップロードはできたのですが、複数のファイルのアップロードに手間取りました。


そんなとき、たくさんのファイルを圧縮して一つのファイルにまとめると楽にアップロードできることに気づいたのですが(今思えば、ファイル一つずつアップロードをやろうとしてた自分が不思議です)、この方法だとアップロードが簡単にできました。


そんな方法を学んだので、技術メモとして残したいと思います。


レンタルサーバーにはファイルのアップロード機能があることがほとんどですが、レンタルサーバーによってはアップロードできない場合があるので、FTPソフトを使うのがおすすめだとのことが、ググるとたくさん出てきました。

INDEX

f:id:tukumosanzou:20181022081331j:plain

MacOSではZipファイルにまとめたいファイルを選択して、右クリックすると表示されるプロパティの「Compress」で、ファイルの圧縮ができます。

Windowsでも標準で可能です。

解凍ソフトを使う方法もあります。

ファイル名は「Archive.zip」など、わかりやすいもので構いません。




圧縮ファイルを解凍するためのPHPファイルを準備する



圧縮ファイルをアップロードしたら、もちろんファイルを解凍しなけれなならないので解凍用のプログラムをPHPで準備します(なぜPHPなのかは、おそらく大抵のサーバーはPHPは動作するようになっているからでしょう。)


*ググって調べたものです、作成者に感謝です。


次のような内容のPHPファイルを準備します。

<?php
//実行しているスクリプトのフルパスを取得
$scriptfullpath=(empty($_SERVER["HTTPS"]) ? "http://" : "https://").$_SERVER["HTTP_HOST"].$_SERVER['PHP_SELF'];

$filename="";
$filename= $_POST["filename"];

echo <<< EOM
<form method="post" action="$scriptfullpath">
<input type="hidden" name="mode" value="unzip">
-----Un Zip program-----<BR>
Input zip filename:<input type="text" name="filename" value="$filename">
<input type="submit" value="UNZIP">
</form>
EOM;

if(strpos($filename,'.zip') !== false){
//$filenameの中に.zipが含まれている場合
$zip = new ZipArchive;
$res = $zip->open($filename);
if ($res === TRUE) {
$zip->extractTo('./');
$zip->close();
echo 'OK--unzip success';
} else {
echo 'error--unzip failed';
}
}else{
//zipファイルではない
if($_POST["mode"] == "unzip"){echo 'error--this file is not zip file';}
}

?>



このファイルも、「unzip.php」などのように適当なファイル名で構いません。

Visual Code等のエディタでファイルを作成します。




PHPファイルと圧縮ファイルをアップロードする



「Archive.zip」「unzip.php」の二つのファイルをレンタルサーバーのファイルをアップロードしたいディレクトリに、FTPソフトもしくはサーバーのアップロード機能を使ってアップロードします。


※わたしの方では、FTPソフトでしかアップロードができませんでした、原因はわかりませんがサーバーのアップロードがうまく機能しませんでした。




PHPファイルを実行して圧縮ファイルを解凍する



サーバーにアップロードできたら、ファイルを解凍するためにPHPファイルを実行する必要があります。


「自分のドメイン/アップロード先のディレクトリ名/unzip.pnp」


のフルパスで、「unzip.php」ファイルにアクセスして実行します。


すると、入力フォームが表示されるので解凍したいファイル名を入力します。


ここでは、「Archive.zip」と入力すれば大丈夫です。


あとは、「UNZIP」のボタンをクリックして「OK–unzip success」のメッセージが出れば、ZIPファイルの解凍は完了です。