微禄: 2013年11月アーカイブ

レンタルサーバーのXREA+(CORESERVERも同様)上で、最新版Movable TypeのZipファイルを、「PHPをCGIとして動かす方法」に従って、解凍スクリプトで解凍します。

●説明文に「標準ではモジュール版としてご利用いただけますが、セーフモードが有効、ユーザー名が自分ではないなどの制限があります。CGI版PHPとして動作させますと、その制限がなくなります。」とあり、
●ファイルの先頭行に「#!/usr/local/bin/php」を挿入します。

解凍(展開)したいZipファイルをレンタルサーバーのXREA+上に、FTPでアップロードします。
アップしたZipファイルと同じディレクトリ(フォルダ)に、下記のようなcgiファイルを作成します。
ファイル名には、好きな名前を付けて構いません。


#!/usr/local/bin/php                    // 必ず先頭行に挿入すること

<?php
 $zip_file = 'MTOS-5.2.8.zip';          // 展開するzipファイルを指定

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

 if($zip = unzip($zip_file)) {
   echo "<pre>$zip</pre>\n";             // 展開されたファイルが表示される
   echo "解凍成功:$zip_file";
 } else {
   echo "解凍失敗:$zip_file";
 }
 ?>

このcgiファイルにブラウザからアクセスすると解凍が始まり、解凍成功と表示されれば、圧縮ファイルが展開されています。

例えば、cgiファイル名を zipunzip.cgi 、アップロードするディレクトリ(フォルダ)を mtdaisuki.com とすると、ブラウザのアドレス欄に、http://mtdaisuki.com/zipunzip.cgi と入力してEnterキーを押下します。


解凍結果

Archive:  MTOS-5.2.8.zip
   creating: MTOS-5.2.8/
   creating: MTOS-5.2.8/tools/
  inflating: MTOS-5.2.8/tools/rebuild-benchmark 

中 略

  inflating: MTOS-5.2.8/mt-feed.cgi
  inflating: MTOS-5.2.8/readme.html 

解凍成功:MTOS-5.2.8.zip

となりました。


重要:信頼のおけるサイトのスクリプトを手に入れましょう。ウイルスの感染などには、最大限の警戒が必要です。

レンタルサーバーのXREA+(CORESERVERも同様)上で、最新版Movable TypeのZipファイルを、前回見つけた解凍スクリプトで解凍します。

先ず、解凍(展開)したいZipファイルをレンタルサーバーのXREA+上に、FTPでアップロードします。
次に、アップしたZipファイルと同じディレクトリ(フォルダ)に、下記のようなphpファイルを作成します。
ファイル名には、好きな名前を付けて構いません。


<?php
 $zip_file = 'MTOS-5.2.8.zip';            // 展開するzipファイルを指定

 $zip = new ZipArchive;
 if($zip->open("$zip_file") === TRUE) {
    $zip->extractTo('./');
    $zip->close();
    echo '成功';
 } else {
    echo '失敗';
 }
 ?>

または


<?php
 $zip_file = 'MTOS-5.2.8.zip';          // 展開するzipファイルを指定

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

 if($zip = unzip($zip_file)) {
   echo "解凍成功:$zip_file";
 } else {
   echo "解凍失敗:$zip_file";
 }
 ?>

このphpファイルにブラウザからアクセスすると解凍が始まり、成功と表示されれば、圧縮ファイルが展開されている筈です。

例えば①の場合、phpファイル名を zipextract.php 、アップロードするディレクトリ(フォルダ)を mtdaisuki.com とすると、ブラウザのアドレス欄に、http://mtdaisuki.com/zipextract.php と入力してEnterキーを押下します。


①の解凍結果

「Fatal error: Class 'ZipArchive' not found in /virtual/(USER ID)/public_html/zipextract.php on line 4」と表示されて、エラー終了。

XREA+には、ZipArchive が導入されていないようです(CORESERVERも同様)。


②の解凍結果

「Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes in Safe Mode in /virtual/(USER ID)/public_html/zipunzip.php on line 5
解凍失敗:MTOS-5.2.8.zip」と表示されて、解凍失敗。

オンラインのPHP Manualによれば、

PHPのセーフモードは、共有サーバーでのセキュリティの問題を解決するための試みです。 この問題をPHPのレベルで解決しようとするのはアーキテクチャ上正しくありません。しかし、WebサーバーやOSレベルでの代替策はあまり現実的ではないため、多くのユーザー、特にISPではセーフモードが現在使用されています。

警告 この機能は PHP 5.3.0 で 非推奨となり、PHP 5.4.0 で削除されました。

となっています。

PHP5.5.0以上であれば、解凍成功となるであろうと思われます。

XREA+は、今後、PHP5.5を導入予定のようです(CORESERVERも同様)。

10月17日に、シックス・アパートより、最新版のMovable Typeが出た事もあり、アップグレードしようと思うのですが、一寸気になる事があります。

Movable TypeのCMSなどをインストールする際、数千にも及ぶファイルをレンタルサーバーにアップロードする必要がありますが、大量のファイルをFTPを使ってアップロードする作業は、とても時間が掛かります。

然も、アップロード中にFTPクライアントが落ちてしまい、どこまでアップロード出来たか分からない為、最初からやり直すなどの失敗もあります。

圧縮ファイルのみをアップロードして、レンタルサーバー上で解凍する事が出来れば、素早く大量のファイルを展開することが可能です。

レンタルサーバー上でZipファイルを解凍するには、

1.SSHやtelnetを利用する
2.サーバーツールのファイルマネージャを利用する
3.解凍スクリプトを利用する

などの方法があります。但し、

・SSHやtelnetは、クライアントソフトを利用しますが、サーバーの設定やコマンド操作などが難しい。
・ファイルマネージャは、通常のブラウザーが利用可能ですが、扱えるファイル容量などに制限がある。
・解凍スクリプトは、通常のブラウザーが利用可能ですが、自分でプログラムを書くかネット上で検索する必要がある。

など、それぞれ難点を抱えています。

ソフトサイトからダウンロードした圧縮ファイルをパソコン上で解凍し、大量のファイルをレンタルサーバーにアップロードするという時間が掛かるやり方を、簡単に・素早く・確実に実行するには、解凍スクリプトを見つけて利用するのが一番の近道かと。

SSHやファイルマネジャを扱う為に、新たに覚えなければならないソフトの設定やコマンド操作、操作手順などの煩わしさが無い分、親しみやすいのではないかと思われます。


インターネット上で検索を掛けると、次の2つが見つかりました。

<?php
 $zip_file = 'MTOS-5.2.8.zip';            // 展開するzipファイルを指定

 $zip = new ZipArchive;
 if($zip->open("$zip_file") === TRUE) {
    $zip->extractTo('./');
    $zip->close();
    echo '成功';
 } else {
    echo '失敗';
 }
 ?>


<?php
 $zip_file = 'MTOS-5.2.8.zip';          // 展開するzipファイルを指定

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

 if($zip = unzip($zip_file)) {
   echo "解凍成功:$zip_file";
 } else {
   echo "解凍失敗:$zip_file";
 }
 ?>