今回は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」より一式ダウンロードできます。
実行と結果:解凍用PHPスクリプトファイル(unzip.php)にアクセス
アップロードした解凍用PHPスクリプト(unzip.php)にWEBブラウザからアクセスすることで、アップロードしたzipファイルがサーバー上で自動的に解凍されます。
このプロセスを通じて、大量のファイルを簡単かつ迅速にWEBサーバーに展開することが可能になります。
ブラウザで
https://WEBサーバーURL/unzip.php
にアクセスするとアップロードしたzipファイルが展開されます。
まとめ
この方法を用いることで、大量のファイルを含むプロジェクトを効率的にWEBサーバーにデプロイすることができます。時間のかかるファイルアップロード作業を効率化し、よりスムーズなWEBサイトやアプリケーションの立ち上げを実現しましょう。
この記事が、エンジニアやWEBサイト運営に携わる皆さんにとって有用な情報となれば幸いです。技術的な挑戦や創造的な試みを通じて、より良いWEB環境の構築を目指していきましょう。
※流用される場合は自己責任でお願いします。