PHP

PHPを使用してWEBサーバーへ大量ファイルを圧縮・アップロード・解凍する完全手順

今回はWEBサーバーへの大量ファイルアップロードに関する小技を紹介します。
WordPressやEC-CUBEなどのCMSをWEBサーバーにインストールする際、多くのファイルをアップロードする必要がありますが、この作業は時間がかかるだけでなく、時には一部のファイルが正しくアップロードされないという問題に遭遇することもあります。そんな時の解決策として、ファイルを一つのzipファイルにまとめてアップロードし、サーバー上で解凍する方法をご紹介します。

アップロード前の準備

WEBサーバーにファイルをアップロードする前に、重要な準備があります。
それは、アップロードしようとしているzipファイルやディレクトリ、PHPスクリプトファイルと同名のファイルがサーバー上に既に存在しないかを確認することです。
この確認作業を怠ると、既存のファイルを上書きしてしまう可能性があり、予期しないトラブルにつながる恐れがあります。

アップロードと解凍のプロセス

まずは、アップロードしたいディレクトリをzip形式で圧縮します。
その後、このzipファイルと特定のPHPスクリプト(後述)をWEBサーバーにアップロードします。
これにより、アップロードの時間短縮と、一部のファイルがアップロードに失敗するリスクの低減を図ることができます。

解凍用PHPスクリプトの準備

解凍作業を自動化するため、特定のPHPスクリプトファイルを用意し、それをサーバーにアップロードします。
このスクリプトは、アップロードしたzipファイルをサーバー上で解凍する役割を果たします。

以下の解凍用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");
}

?>

 
このスクリプト(unzip.php)は、サーバー上で直接zipファイルを解凍するために使用します。
「assyuku.zip」を解凍したいzipファイル名に適宜変更してください。

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

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

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

実行と結果:解凍用PHPスクリプトファイル(unzip.php)にアクセス

アップロードした解凍用PHPスクリプト(unzip.php)にWEBブラウザからアクセスすることで、アップロードしたzipファイルがサーバー上で自動的に解凍されます。
このプロセスを通じて、大量のファイルを簡単かつ迅速にWEBサーバーに展開することが可能になります。

ブラウザで

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

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

まとめ

この方法を用いることで、大量のファイルを含むプロジェクトを効率的にWEBサーバーにデプロイすることができます。時間のかかるファイルアップロード作業を効率化し、よりスムーズなWEBサイトやアプリケーションの立ち上げを実現しましょう。

この記事が、エンジニアやWEBサイト運営に携わる皆さんにとって有用な情報となれば幸いです。技術的な挑戦や創造的な試みを通じて、より良いWEB環境の構築を目指していきましょう。

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