ファーストサーバのデータ消失大事故が発生するずっと前から動きが止まっていた dfGallery 2.0 をふたたび動かすことに成功したので資料としてアップしておきます。

ちなみに dfGallery 2.0 というのは無料で使うことができるフォトギャラリーで、「こんな機能があったらいいよね」というものはすべて盛り込まれている「全部入りフォトギャラリー」であります。


最大の欠点はというと「まともに動作しているものにお目に掛かることが極めて少ない」というところでしょうか。

サーバ環境によって (レンタルサーバによって) 「インストールできる」「インストールできない」「動く」「動かない」がハッキリ分かれ、今回の私のところのように突然動かなくなるなんてザラです(笑) そして、動かない原因を国内外のユーザーみずからが突き止め、対策を公開してくれているおかげで生きながらえているという稀なフォトギャラリーでもあります。

あと欠点といえば iPhone・iPad で見られないことぐらいで、これが無料とは恐れ入ります。動けばのハナシ :ase:

» dfGallery 2.0 – Free Flash Gallery | Dezinerfolio

2009 年 1 月に無料配布が始まり、ご覧のように現在では配布元のオフィシャルサイトにあるデモの dfGallery 2.0 も動きを止めてしまっていて、ますます見る機会が少なくなっているのが現状です。

さて、前置きが長くなりましたが、ここでは今回動かなくなった原因と対策のみ載せておきます。dfGallery 2.0 のダウンロード、 インストール手順全般に関しては以下の投稿をご覧下さい。

» ファーストサーバでdfGallery 2.0をインストールする


動かなくなった原因

サーバが PHP5.2 から PHP5.3 になったため。
ちなみにファーストサーバのデータ消失大事故で動かなくなったわけではありません(苦笑)

先月のデータ消失事故の復旧作業中になにげなく検索した「dfGallery PHP」でヒットした下記サイトの記事がドンピシャ (死語?) な回答でありました。どうもありがとうございます、大変助かりました。

とても参考になった記事:
» dfgallery PHP5.3での修正 | 管理人の日記~つらつらなるままに~


対策

参考にさせていただいた上記記事中に対処方法は詳しく書かれていますが、自分のところでは違った不具合も出たのでそれも含めてメモとして載せさせていただきます。

  1. dfGallery 2 の管理ページにアクセスしようとしたところ下記の警告とともにログインできない状態になりました。

    ちなみに、ピンク色の警告のところに表示されている URL にブラウザでアクセスすると以下のように表示されます。

    ファイル名と行数がが書かれているのでそこにエラーがあることはわかりますが、どうしていいのかなんのことだかさっぱりわかりません :poripori:

  2. 参考にさせていただいた記事によると PHP5.2 から PHP5.3 へのバージョン変更が不具合の原因とのことで、不具合に関連する 3 つのファイルを編集しなおします。確かに動かなくなったころ、PHP5.2 から PHP5.3 にバージョンアップされた記憶があります。

    • /lib/ci/codeigniter/CodeIgniter.php

      60行目

      set_magic_quotes_runtime(0); // Kill magic quotes

      をコメントアウト

      //set_magic_quotes_runtime(0); // Kill magic quotes


    • /lib/ci/libraries/URI.php

      189行目

      if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str))

      をコメントアウトして下記のように

      //if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str))
      if ( ! preg_match("|^[".($this->config->item('permitted_uri_chars'))."]+$|i", rawurlencode($str)))


    • /lib/ci/libraries/Loader.php

      249行目

      $CI->dbutil =& new $class();

      をコメントアウトして下記のように

      //$CI->dbutil =& new $class();
      $CI->dbutil = new $class();


  3. 以上、3 ファイルの編集が完了したらサーバに上書きアップロードして、dfGallery 2.0 の管理ページをリロードすると。。。

    お~ぉ、久しぶりにログイン画面があらわれました :ase:


もうひとつ不具合が発生

私のサーバ環境ではログインしたあともうひとつ不具合が発生しまして

ご覧のようなエラー表示が orz

PHP に関してはドシロウトなので何のエラーかまったくわかりませんでしたが、ここまで来てあきらめるわけににはいかないので表示されている言葉

Assigning the return value of new by reference is deprecated

をたよりに検索してみたところ、、、あった、あった、ありました。

Google の検索結果画面に表示される WEB ページの description ですでに回答が得られました。これって、先ほど /lib/ci/libraries/Loader.php の編集内容と同じですね。

さっそく Assigning the return value of new by reference is deprecated の下に書かれている


Filename: database/DB.php
Line Number: 133

に該当するファイル /lib/ci/database/DB.php の 133 行目を見たらありました。

133 行目

$DB =& new $driver($params);

をコメントアウトして下記のようにすると

//$DB =& new $driver($params);
$DB = new $driver($params);


やっと完璧な管理画面になりました。

お目に掛かるのが意外と難しい管理画面(笑)
お目に掛かるのが意外と難しい管理画面(笑)


せっかくなので「これ無料で使っていいの?」という dfGallery 2.0 の管理画面をいくつかお見せして (いつ見られなくなるかわからないので^^;) 終わりにします。


追記:
dfGallery には比較的導入が簡単な dfGallery 1.0 もあります。よろしければご覧下さい。