PHP

【PHP】大量ファイルを圧縮しWEBサーバーにアップロードして解凍(unzip)・展開する方法

WordPressやEC-CUBE等をWEBサーバーにインストールする時、大量のファイルをアップロードする必要があります。大量ファイルのアップロードには時間が掛かったり、稀に数ファイルだけアップロードに失敗することがあります。そんな時は大量ファイルをローカルでzipファイルに圧縮して、そのzipファイルをWEBサーバーにアップロードし、WEBサーバー上で解凍(unzip)・展開すると短時間で確実にWEBサーバーにアップロードできるのでその方法をご紹介します。

同じファイル・ディレクトリ名がアップロード先のWEBサーバーに無いか確認

まず、事前に同じ名前のzipファイル名、ディレクトリ名、PHPスクリプトファイル名が、zipファイルを展開するWEBサーバー上に無いことを確認して下さい。

圧縮したzipファイルと解凍(unzip)用phpスクリプトファイルをアップロード

アップロードするディレクトリをzipファイルに圧縮し、圧縮じたzipファイルを展開するWEBサーバーにアップロードします。

解凍用PHPスクリプトファイル:unzip.php

以下の解凍用PHPスクリプトファイル(unzip.php)をWEBサーバーにアップロードします。

unzip.phpファイルの内容

<?php
/*
zipファイルをWEBサーバー上で展開するPHPスクリプトです。
まず、事前に同じ名前のzipファイル名、ディレクトリ名、PHPスクリプトファイル名が、zipファイルを展開するWEBサーバー上に無いことを確認して下さい。
zipファイルとこのPHPファイルをWEBサーバーの同じディレクトリにアップし、ブラウザで
https://WEBサーバーURL/unzip.php
にアクセスするとアップしたzipファイルが展開されます。
*/

$zipfilename = 'assyuku.zip'; // ← 解凍するzipファイ名(assyuku.zip)に変更して下さい
$zipfilepass = getcwd().'/'.$zipfilename;

if(!is_file($zipfilepass)){
  exit("zipファイルが「".$zipfilepass."」にありません。");
}

function unzip($zipfilepass){
  return shell_exec("unzip $zipfilepass");
}

if($zip = unzip($zipfilepass)){
  echo '<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>zipファイルが解凍されました。</title></head><body>';
  echo "zipファイルが解凍されました。<br />\n";
  echo "解凍ファイル:$zipfilename<br />\n";
  echo '<div style="overflow:auto; height:450px; border: #ccc 1px solid; margin:20px;">';
  echo "$zip</div>\n";
  echo "$zipfilename: は正常に解凍されました。<br />\n";
  echo '</body></html>';
}else{
  echo("抽出に失敗しました: $zipfilepass\n");
}

?>

 
※「assyuku.zip」は圧縮したzipファイル名が入りますので、任意の圧縮したファイル名に変更して下さい。

解凍用PHPスクリプトファイル(unzip.php)GitHubからダウンロード

※リンク先の「Code」をクリックし「Download ZIP」より一式ダウンロードできます。

「yo1tec/unzip」からダウンロード >>

WEBサーバーの解凍用PHPスクリプトファイル(unzip.php)にアクセス

ブラウザで

https://WEBサーバーURL/unzip.php

にアクセスするとアップロードしたzipファイルが展開されます。

 

※流用される場合は自己責任でお願いします。