ppBlogをサーバー上でZIP展開

category-icon

 こんばんは。どうも昨日辺りから自宅のネット接続がとろいです。ppBlogは、ファイル数は390個(決して多くはないと思いますけど)近くあるのですが、それが昨日は全部アップロード出来ずじまい。愛用しているFFFTPGの転送画面が何度も途中でフリーズしたようになってました。昔、28.8kbps?ぐらいのモデムでピーガラガラとかやってたのを思い出しはしませんでしたが。

 というわけで、ブログシステムというものは、多機能になればなるほど、当然のようにそのサイズが肥大化していきます。なので、サーバー上に、圧縮されたZIPファイルをさくっとアップロードして、そこで展開するのが楽だよなぁ、と思ったので、PHPの充実したオンラインマニュアルを片手に、そういうスクリプトを書いてみました。最初に書いたのが以下です。ローカルのテスト環境でわけなく作動したので、こりゃいけるとサーバー上で試したら、zip_open関数がないと怒られました(--)

function my_unzip($zipFile=''){
 $zip_dir = getcwd().'/';  // カレントディレクトリの取得
 if(is_dir(str_replace('.zip', '', $zipFile))){ // 既に展開されたディレクトリがあるならば
  exit("Already exists!");
 }
 $i = 0; // どれくらいファイルがあるのか知りたい
 if($zip = zip_open($zip_dir.$zipFile)){
  while($zip_entry = zip_read($zip)){
   $file = zip_entry_name($zip_entry);
   $zdir = $zip_dir.dirname($file);
   if(!is_dir($zdir)){
    @mkdir($zdir, 0777); // ディレクトリないなら作成
    echo "Directory: ".dirname($file)."/ created.<br />¥n"; // メッセージ表示
   }
   if(zip_entry_open($zip, $zip_entry, 'rb')){ // ファイルの書き出し
    if($fp = @fopen($file, 'wb+')){
     fputs($fp, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
     fclose($fp);
     echo " File ".++$i.": $file created.<br />¥n";
    }
   }
   zip_entry_close($zip_entry);
  } #while
 }
 zip_close($zip);
 return TRUE; // 無事に終わったらTRUEを返す
}

これを以下のようにしてローカルで走らせました。

if(my_unzip('ppBlog180b.zip')){
 echo "Successfully extracted!¥n";
} else echo "Failure!¥n";

したら、ファイル数が390個近くあることが判明。で、実際にオンラインのサーバー上でもやってみたら駄目だったわけです。なので、シェルコマンドでトライしてみました。

$zip_file = getcwd().'/ppBlog180b.zip'; // 展開するファイルを指定

function unzip($zip_file){
 return shell_exec("unzip $zip_file"); // UNIX系には、まず付いてるであろうunzipを使う
}

if($zip = unzip($zip_file)){
 echo "<pre>$zip</pre>¥n"; // これでずらっと展開されたファイルが表示される
 echo "$zip_file: Successfully extracted!
"; echo '<a href="./ppBlog180b/install.php">installation</a>'; // 続けてppBlogのインストール画面へ誘導 } else{ echo("Failed to extract: $zip_file¥n"); }

そしたら、今度は上手く行きました。すべてのファイルがそっくりサーバー上で展開されていました。これは楽チンですねぇ。上のスクリプトは、単にZIP圧縮されたフォルダを展開するだけなので、サーバー上に作成されたディレクトリは、圧縮前のフォルダの名前と同じになります。多分、copyコマンドとかchdirで、展開先やら名前を指定できるでしょうね。

 一応、この簡単なスクリプトを添付しておきます。お使いのサーバーで動くかどうかは保証しませんが。。と、その前にppBlog180b.zipがないことには・・・。

添付ファイル: ppblogunzip.phpattachedIcon 

— posted by martin at 03:58 am   commentComment [0]  pingTrackBack [0]

この記事に対する TrackBack URL:

設定によりTB元のページに、こちらの記事への言及(この記事へのリンク)がなければ、TB受付不可となりますのであらかじめご了承下さい。

コメントをどうぞ。 名前(ペンネーム)と画像認証のひらがな4文字は必須で、ウェブサイトURLはオプションです。

ウェブサイト (U):

タグは使えません。http://・・・ は自動的にリンク表示となります

:) :D 8-) ;-) :P :E :o :( (TT) ):T (--) (++!) ?;w) (-o-) (**!) ;v) f(--; :B l_P~

     
T: Y: ALL: Online:
Created in 0.0039 sec.
prev
2024.4
next
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30