XREA+レンタルサーバー上でZipファイルを解凍する その1

|

レンタルサーバーの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も同様)。