XOOPS(ゼルコバの木ユーザ会サイト)をほぼ完璧に復元できた

明日はわたしの誕生日(74歳).姉から「一日早いけど」と言って赤飯と刺し身の差し入れが届いた.本来なら姉宅でご馳走になっているところだが,コロナ蔓延騒ぎのあおりで中止になった.わさびを切らしていたので仕方なく生醤油で食べることにしたが,口に含んだ瞬間子どものころにお粥で食べた刺し身の味が蘇ってきた.胸をやられて衰弱し高熱が続いて何も食べられなくなってしまったわたしを見かねた親が特別に買ってきてくれたものだ.もちろん家族全員にわたるほどの余裕はないから,兄弟たちの羨望の眼差しを浴びながらうつむいて赤いマグロの切り身を口中に含んだときのあの生々しい舌触りと香り…もしあのとき親が何もしてくれなかったらわたしはもうとっくにこの世にいなかったかもしれない…

まず,始業時バックアップを取ってから始めよう.

xamppのバージョンは 1.6.3a,Apache 2.2.4,PHP 5.2.3,MySQL 5.0.45でphpMyAdminのバージョンは2.10.3.これでXOOPS Cube xxxがほぼ問題なく走るようになった.保存されているSQLの中で最終に近いものとして自家サーバ\XOOPS\mysql31.chicappa.jp.sqlをインポートしてサイトを復元・実行可能にするというのが今日の目標だ.このSQLには屋根裏部屋のWordPressデータも入っているため99MiBもあって読み込むことができない.xpressの分を別ファイルBに切り出して残りをAとした.ファイルAは14MiBでインポートはできたが,動作しない(画面が真っ白になってしまう).データベースinformation_schemaが更新されていないためと考えられる.⇒xoops DB ファイルのxpress 以外の部分を XOOPS A.SQL とした.このSQLでは①information_schema データベースを無条件で生成している.②この中に複数のテーブルを一時テーブル(TEMPORARY TABLE)として新規生成している.③XOOPSデータベース ‘OA00090878_babalabo’ はCOLUMNS.KEY_COLUMN_USAGE,SCHEMATA,STATISTICS,TABLES,TABLE_CONSTRAINTSの各一時テーブルで参照されている.

一時テーブルはセッション終了後には削除されるから,レコードが残らないのは当然だ.それでは,これらのテーブルは何のために生成されているのか?(生成しようとしているのか?)チカッパデータベースではデータベースは個別に管理されているからユーザデータとシステムの管理用データが同じ場所にあるという状態にはなっていないのではないか?この間ロリポ!からダウンロードしたWordPressのSQLを見てみよう.いや,データベースサーバにMySQLで直接アクセスして覗いた方が早い.⇒確かにWP用のユーザデータベースが1個あるだけだ.ローカルのMySQLにはinformation_schemaの他にも,cdcol, mysql, phpmyadmin, webauthなどのデータベースが入っているが,information_schema内のテーブル類はすべてinformation_schemaの内部的な情報であるように見える.

従って,ユーザデータベースとinformation_schemaは基本的に無関係と考えてよい.実際,https://dev.mysql.com/doc/refman/5.6/ja/information-schema.html の記事によると,「USE ステートメントを使用してデフォルトデータベースとして INFORMATION_SCHEMA を選択できますが、実行できる操作はテーブル内容の読み取りだけで、テーブルに対する INSERTUPDATEDELETE 操作は実行できません。」とあるので,information_schema にはユーザサイドでは読み取りだけで一切操作できないと考えてよい.逆に言うと,チカッパからエクスポートした情報の中にinformation_schemaに関する情報が入っているのはなぜか?ということになるが,これは明示的にはアクセスできない情報をつまり通常外からは見えない内部情報を可視化するためと考えてよいのではないだろうか?この解釈でよいとすればデータベース操作は至って簡単なものになる,自分のユーザデータベースを操作すればよいということになるのだから…実際構造的に考えても情報的に言ってそれで十分であるように思われる.

逆に言うとであるとすれば,現在XOOPSにログインできない状態というのはデータベースとは関わりがないということになるのではないだろうか?⇒XOOPS A.SQLを修正してinformation_schemaに関わる操作をすべてコメントアウトした.oa00090878_babalaboをドロップしてからこのファイルをインポートした.エラーは発生しなくなった.しかし,localhostにアクセスすると,画面は依然として真っ白いままだ.データベースユーザを追加してXOOPS専用のアカウントを作れば何か変化があるだろうか?

動作はまったく同じだ.XOOPS_SALTが一致していないということも考えられるが,この値はサイト創設以来一貫して変化していないはずだ.localhost/user.phpでログイン画面を出してログインすれば管理画面でデバッグモードに切り替えができるというアドバイスがあったが,user.phpでも真っ白になる.include/common.phpに直接パッチを当ててデバッグモードに切り替えるという手がある.zelova_configにdebug_modeというのがあるから,これをオンにしてみよう.⇒エラーが出るようになった.

Fatal error: require() [function.require]: Failed opening required ‘D:/xoops_trust_path/modules/dbtheme/preload.php’ (include_path=’.;C:\xampp\php\pear\’) in D:\XOOPS\modules\dbtheme\preload\DbthemePreload.class.php on line 9
Warning [PHP]: require(D:/xoops_trust_path/modules/dbtheme/preload.php) [function.require]: failed to open stream: No such file or directory in file D:\XOOPS\modules\dbtheme\preload\DbthemePreload.class.php line 9

localhostの指定が間違っていたのではないか?DocumentRoot “D:/XOOPS”としているが,これは”D:/XOOPS/html”のはずだ.いや,間違いだ.この版ではhtmlは不用だ.xoops_trust_path/modulesの中にはpicoとprotectorしか入っていない.少なくともdbthemeがなくてはならない…自家サーバ/XOOPSではxoops_trust_pathはXOOPSの内部に入っている.これを外に持ち出す必要がある.⇒!出た!確かに少し進化した画面が表示されている.長らくmantisアタック事件の告知が続いていたが,この版では東日本大震災お見舞いの記事に変わっている.

image

さて,これがどこまで動いてくれるかが問題だ.XOOPS管理人babalaboのパスワードは覚えていない.奥の手を使って入ることにしよう.しばらは暫定パスワードとして短いものを使っておこう.デバッグモードで走らせているはずだが,エラーは鳴りを潜めたように収まっている.屋根裏部屋はまだデータをアップロードしていないのだから当然として,ほとんどエラーなしで動作できそうだ.「ゼルコバ通信」を開いて左サイドバーが消えてしまうという事象があるが,ページの内容には問題ない.画面上部のメニューバーを試してみる.HOME, NEWS, MANUAL, FORUM, USERS-CLUBまでは順調だ.BUG-REPORTでは警告が出ている.

Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS\modules\mantis\language\ja_utf8\main.php:1) in D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php on line 25
Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS\modules\mantis\language\ja_utf8\main.php:1) in D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php on line 26
Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS\modules\mantis\language\ja_utf8\main.php:1) in D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php on line 27
Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS\modules\mantis\language\ja_utf8\main.php:1) in D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php on line 28
Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS\modules\mantis\language\ja_utf8\main.php:1) in D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php on line 29
Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS\modules\mantis\language\ja_utf8\main.php:1) in D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php on line 30

画面もエラーを検知して下図のようなものが表示されている.

image

このエラーメッセージには「改善要求」という言葉が含まれるのでmantisが出しているもののように思われる.DOWNLOADにはジャンプできる.新着ダウンロードのトップは「ゼルコバの木ベータ正式版候補Ver1.9.9.90暫定リリース」 このリンクをクリックするとネット上のzelkova-tree.netサイトにジャンプしようとする.ファイルは/uploads/ZelkovaSetup/に格納されている.アップロードされているリリースの最終版は1.9.9.94だが,これは公開されなかった模様だ.ARCHIVEも開けるがリンクをクリックするとやはりzelkova-tree.netにジャンプしてしまう.いや,中にはダウンロードできるものもある.タモリさんちの超複雑な家系はダウンロードできた.LINKも問題なく動作している.ABOUT, CONTACTまではよいが,PRIVACYでエラーが出た.Object not found!だ.参照しているリンクはhttp://localhost/privacy.php .これは元々存在していなかったのではないだろうか?xpressにはoptions-privacy.phpというのが入っているが…現物はどこにも見当たらない…

左サイドバーの動作を見てみよう.

  • ホーム HOME ○
  • ユーザ会ニュース NEWS ○
  • ユーザ会フォーラム FORUM ○
  • なんでも質問箱 △ 未解決の問題が56件ある
  • ゼルコバの木の使い方 MANUAL
    最初にお読みください ○
    インストールの方法 ○
    ライセンスキーの取得 ○
    ゼルコバの木の画面 ○
    メニューコマンド一覧 ○
    使い方のポイント △ 一部未編集の記事がある
    ショートカットキー割り当て表 ○
    ゼルコバの木用語集 ○
    使い方:アーカイブ ○
  • ゼルコバの木の育て方 USERS-CLUB
    クラブハウスのご案内 △ 未編集
    フォーラムへの投稿 △ 未編集
    バグレポートの書き方 △ 未編集
    系図アーカイブへの投稿 △ 未編集
    Webリンク集への登録 未編集
    ゼルコバの木に水をどうぞ ○
    ゼルコバライセンス規約 △ 未編集
    ライセンスキー一覧表 ○
  • バグレポート BUG-REPORT ❌ エラー画面が表示される
  • ゼルコバの木ダウンロード DOWNLOAD ▲ サイトにジャンプしてしまう
  • 系図ファイルアーカイブ ARCHIVE △ 一部でサイトにジャンプしてしまう
  • 系図Webリンク集 LINK ○
  • 屋根裏部屋 ❌ エラー画面が表示される
  • ニュースデスク ○ 多分これは非公開と思われる
  •  

    左サイドバーのメニューのほとんどはメニューバーの項目と同じでメニューバーに入っていない項目としては①なんでも質問箱,②屋根裏部屋,③ニュースデスクしかない.ゼルコバの木の使い方の下には9つのサブカテゴリがある.使い方のポイントには一部未編集の記事がある.ゼルコバの木の育て方の下には8個のサブカテゴリがあるが,コンテンツはほとんど未編集のまま放置状態.開けるのはゼルコバの木に水をどうぞ→ゼルコバの木開発支援マイクロファンド・キャンペーンとライセンスキー一覧表→ライセンスコードとライセンスキーの対応一覧表(全公開バージョン)だけだ.屋根裏部屋にアクセスすると下記画面が出る.

    image

    ニュースデスクにはゼルコバ通信のバックナンバーが入っている.最新情報はMon 07-Nov-2011の「ゼルコバ通信速報版:ゼルコバの木ベータ早出し版ファイナルリリースをアップロードしましたbabalabo」だ.ユーザ会ニュースにはこの記事が再編集されて公開されている.ニュースディスクというメニューは管理人としてログインしないと表示されないのではなかったろうか?いずれにしてもほぼすべてのページが従前通り表示できることが確認できた.動作的なエラーが出ているのはmantisだけと見てよい.これでゼルコバの木ユーザ会サイトはほぼ復元できたと言ってよいだろう.

    あと残っているのはWordPressのデータをインポートする部分だけだ.これができればいまやっている作業はほぼ大山を超える.いや,実はまだその先がある.現状はxamppとXOOPSを従来通りの動作に戻したというところで,これらを最新バージョンにアップデートした上で動くようにしなくてはならない.サーバのPHPが7になってしまっているので,少なくともそれに対応しないことにはネット上で公開することができないからだ.とりあえず,残りのXOOPS B.SQLをインポートしてみよう.⇒やはり,無理のようだ.現在のBのサイズは85.7MiB.2分割で通るだろうか?

    全体で12660行ある.6000行くらいで分割してみよう.2010年2月~2011年5月までの分を1部とし,それより後ろを2部としてみる.ダメだ!B1が34,769KB, B2が50.9KBになったのだが,B1が通らない.25MBくらいは通っていたはずなので,やはり4分割するしかなさそうだ.PHP.iniの修正はまったく効いていない.分割する前にxamppでPHPのパラメータをチェックしておこう.以下のような値が設定されている.

  • upload_max_filesize 32M
  • memory_limit  32M
  • post_max_size  16M
  •  

    post_max_size と memory_limit は upload_max_filesize より大きい必要があるという説があるのだが,ここでは逆になっている.修正が反映されていないということは場所が悪いためと考えられる.どこかにphp.cnfというファイルがあったのでそちらを参照している可能性はあるかもしれない.c:/xampp/apache/binにphp.iniがある.これではないか?いや,実際Loaded Configuration Fileにはその値が入っている.⇒今度は入ってきた.post_max_size の方がupload_max_filesizeより大きいというのはおかしい気がするので,上と同様post_max_sizeを最小値の120MB,upload_max_filesizeとmemory_limitを最大値の200MBに設定した.おそらくこれで通るだろう.⇒XOOPS Bを一括でインポートできたが,以下のエラーがまだ続いている.

    WordPress のアドレス (URL)にアクセスできません。

    xpress自体が何か設定ファイルを持っているはずだ.WordPressの管理画面に出られた.ただし,画面はかなり壊れている.一般設定というところにWorePressのアドレスというのがあり,そこに http://zelkova-tree.net/modules/xpress という値が設定されている.サイトのアドレスというところにも同じ値が入っている.⇒この2箇所を修正して動作するようになった.

    image

    多分最新の記事はこれだろう.2012年3月11日 源氏4のパックマン全点で解消できない衝突が発生している 8年前のちょうど今頃の時期だ.「源氏4の完全木テストとパックマン全点をPCで並行して走らせておいたのだが,完全木テストの方は5726面:12時間12分21秒で完了していた.パックマンの方でエラーが起きて停止している.」という内容だ.動作はほとんど問題ないように思われる.」 ログインしないとニュースディスクは見えるようにならない.また,バグレポートはログインしないとアクセスできない.一般会員の動作を見たいのでzelkovaアカウントにログインできるようにして会員資格を変えてみよう.⇒zelkovaは特別会員だが管理人ではない.確かに管理人以外にはニュースディスクは見えないようになっている.また,ログインすればバグレポートに入れる.一応ここでバックアップを取っておこう.それぞれXOOPS 2020-03-09 GOOD,xampp 2020-03-09 GOODの名前を付けた.SQLはlocalhost.SQLとして保存された.これにはXOOPSとoa00090878_babalaboを含むデータベースが入っている.

    次の段階に進む準備ができた.xamppとXOOPSを最新バージョンに更新するという段階だ.新しいバージョンのxamppはVer7.4.2なのでxampp7とすることにしよう.xampp new 2020-03-07をxampp7として開始地点とする.いや,これはWin32バージョンだ.xampp NEWを試してみよう.これも32ビットバージョンだ.64ビット版を一度はインストールしているはずなのだが…いや,これもWin32と表示される.もう一度xampp-windows-x64-7.4.2-0-VC15-installerをクリーンインストールしてみよう.これはbitnamiという会社が配布しているバージョンだ.インストールしてxamppコントロールパネルを開いたところ以下のようなエラーが出た.

    2:14:49  [main]     Initializing Control Panel
    2:14:49  [main]     Windows Version:  Home  64-bit
    2:14:49  [main]     XAMPP Version: 7.4.2
    2:14:49  [main]     Control Panel Version: 3.2.4  [ Compiled: Jun 5th 2019 ]
    2:14:49  [main]     You are not running with administrator rights! This will work for
    2:14:49  [main]     most application stuff but whenever you do something with services
    2:14:49  [main]     there will be a security dialogue or things will break! So think
    2:14:49  [main]     about running this application with administrator rights!
    2:14:49  [main]     XAMPP Installation Directory: “c:\xampp7\”
    2:14:49  [main]     Checking for prerequisites
    2:14:49  [main]     All prerequisites found
    2:14:49  [main]     Initializing Modules
    2:14:49  [mysql]     Problem detected!
    2:14:49  [mysql]     Port 3306 in use by “C:\xampp\mysql\bin\mysqld.exe”!
    2:14:49  [mysql]     MySQL WILL NOT start without the configured ports free!
    2:14:49  [mysql]     You need to uninstall/disable/reconfigure the blocking application
    2:14:49  [mysql]     or reconfigure MySQL and the Control Panel to listen on a different port
    2:14:49  [main]     Starting Check-Timer
    2:14:50  [main]     Control Panel Ready
    2:14:55  [Apache]     Attempting to start Apache app…
    2:14:55  [Apache]     Status change detected: running
    2:15:01  [mysql]     Problem detected!
    2:15:01  [mysql]     Port 3306 in use by “C:\xampp\mysql\bin\mysqld.exe”!
    2:15:01  [mysql]     MySQL WILL NOT start without the configured ports free!
    2:15:01  [mysql]     You need to uninstall/disable/reconfigure the blocking application
    2:15:01  [mysql]     or reconfigure MySQL and the Control Panel to listen on a different port
    2:15:01  [mysql]     Attempting to start MySQL app…
    2:15:01  [mysql]     Status change detected: running

    xamppはインストールされていないし,サービスでもないのだからポートは空いているはずなのだが…一度OSを再起動してみる.今度はエラーは発生しなかった.インストーラでインストールしているのだから,setup_xampp.batを実行する必要はないものと考える.PHP 7.4.2 Apache 2.4.41がインストールされている.xampp7のコントロールパネルからAdminでphpMyAdminを開くことができない.DocumentRoot “C:/xampp7/htdocs”だが,phpMyAdminはそれより上の階層にある.コピーしておこう.⇒開けた.さて,後はXOOPSを立ち上げるだけだ.XOOPS Xというのを仕込んであるのでこれを使ってみよう.MySQLの管理者はrootでログイン不用なのでログイン画面は出ない.念のためXOOPS Xをバックアップしておこう.まずい.Apacheが落ちてしまう.⇒httpd.confに修正ミスがあった.localhostでは中身が見えてしまうので,目印にindex.htmlを入れておこう.XOOPS Xの場合にはhtmlがドキュメントルートになっている.ここでlocalhostすると以下のエラーになる.

    Service temporarily unavailable. (Unable to connect to the database)

    xampp7のコントロールパネルからphpMyAdminを開くことはできる.mainfile.phpでMySQLのユーザとパスワードをrootに切り替えたが開けない.データベースをあらかじめ置いておかないとまずいのだろうか?どこかに最小限のSQLがあったと思われるので探してみよう.前に動かしていたときのSQLがある.このSQLではperformance_schemaは作らないが,phpmyadminとtestデータベースを作っている.IF NOT EXISTSが入っているので多分問題ないだろう.

    #1050 – 表 ‘pma__bookmark’ はすでに存在します。

    というエラーは出たが,多分余計なことはやっていないだろう.ここではいつものoa00090878_babalaboを作っている.prefixはzelkovaだ.これでスタート画面を出すことができた.adminでログインできたが管理者メニューが追加されたくらいで画面はあまり変わらない.管理画面→導入・アップデート管理でエラーが起きる.

    image

    リンクは http://localhost/modules/xupdate/admin/index.php?action=UserPassColumnLenFix&xoops_redirect=%2Fmodules%2Fxupdate%2Fadmin%2Findex.php%3Faction%3DModuleView だ.このエラーは前にも出ていたがどうやって抜けたのか忘れてしまった.このエラーが起きるとログインパスワードがロックされる.現在XOOPS Xにロードしているデータベースのテーブルは42個.登録ユーザはadmin一人だ.XOOPS Xをインストールしようとしたときかなりのエラーが出たのでpm, dbtheme, cubeUtils, bulletinを削除している.xamppで動かしていたXOOPSからすべてのモジュールをコピーしておこう.XOOPSには34個のモジュールがある.XOOPS Xには26個しか入っていない.XOOPSのモジュールには複数バージョンも含まれているが…XOOPSのモジュールは古い可能性があるので,XOOPS Xのバックアップからコピーして上書きしておこう.ダメだ!却って悪くなってしまった.xoops_trust_pathもコピーする必要がある.上と同様最初にXOOPSからコピーを取って,その上にXOOPS Xを被せるようにする.いや,単に「ファイルを置き換えないようにする」だけでよかったのでは?まぁ,やってしまったのだからそうするしかない.⇒動作するようになった.モジュールは9個インストールされている.導入・アップデート管理が動作していないというのは同じだ.それ以外の画面にはすべて遷移できる.

    このエラーはERR_TOO_MANY_REDIRECTSというエラーが起きていることを示している.ChromeのRedirect Pathというツールを導入してみる.XOOPS Xは新しいのでhttpsを使っているか使おうとしている可能性がある.これを解決するにはSSL証明書をインストールしSSLチェックを実行することが必要.しかし,今の事象には関わりがない.ApacheではすべてのHTTPトラフィクをHTTPSにリダイレクトする簡単な方法が存在する.

    ERR_TOO_MANY_REDIRECTSというエラーは比較的よくあるエラーのようだが…2020-03-06の記事の末尾に上記の画像が貼ってあるが,そのあと唐突に「一応ある程度までは無害動作するようになったが,さて,このあとどう展開すればよいのか?それが問題だ」で終わっている.このときも今回と同じく「導入・アップデート管理」ボタンを押して上記が起きるという事象なのだが,「無害動作」というのがこの問題の解決を意味しているかどうかが問題だ.導入・アップデート管理は比較的最近導入された「新機能」であると思われるが,必ずしも不可欠ではないようにも思われる.そのように判断して「無害動作」と言っているのかどうか?その翌日の2020-03-07にようやくユーザ会サイトのトップページを表示するところまで漕ぎ着けるのだが,相当ややこしいことをやっている.いずれこの作業をもう一度やるしかないのだが,その前にXOOPS Xの揺るがない土台を築かなくてはならないのではないか?XOOPS Xをインストールしてここまではそれほど長い道程ではないと思われるので,もう一度一からやり直した方がよいような気がする.

    X-UpdateというモジュールはXOOPS Xでは標準モジュールなのだから,最初から「導入・アップデート管理」ができない状態にはならないのではないか?legacy-corepack_20180208をクリーンインストールするところから始めることにしよう.このフォルダをD:に配置し,XOOPS Xとリネームしてapacheからlocalhostでアクセスするとインストールが始まる.大量の警告とDeprecated, Fatal Errorsが出るがインストールは完了する.データベース名などは既存のものを踏襲する.管理者IDでログインすると導入・アップデート管理が開けるようになっている.ネットには接続した状態でアクセスしている.

    image

    インストール可能なモジュールがリストアップされている.インストール済のモジュールは7種.moduleには9個入っている.インストールされていないのはmessageとprotectorの2つ.protectorはインストールできたが,messageは以下のようなFatal Errorになった.

    Fatal error: Uncaught Error: Call to undefined method Legacy_ModuleInstaller::Legacy_ModuleInstaller() in D:\XOOPS X\html\modules\message\admin\class\myInstaller.class.php:16 Stack trace: #0 D:\XOOPS X\html\modules\legacy\admin\class\ModuleInstallUtils.class.php(136): Message_myInstaller->Message_myInstaller() #1 D:\XOOPS X\html\modules\legacy\admin\class\ModuleInstallUtils.class.php(79): Legacy_ModuleInstallUtils::_createInstaller(‘message’, ‘installer’, ‘Legacy_ModuleIn…’) #2 D:\XOOPS X\html\modules\legacy\admin\actions\ModuleInstallAction.class.php(141): Legacy_ModuleInstallUtils::createInstaller(‘message’) #3 D:\XOOPS X\html\modules\legacy\admin\actions\ModuleInstallAction.class.php(128): Legacy_ModuleInstallAction->_getInstaller() #4 D:\XOOPS X\html\modules\legacy\class\ActionFrame.class.php(140): Legacy_ModuleInstallAction->prepare(Object(Legacy_Controller), Object(XoopsUser)) #5 D:\XOOPS X\html\core\XCube_Delegate.class.php(349): Legacy_ActionFrame->execute(Object(Legacy_Controller)) #6 D:\XOOPS X\html\core\XCube in D:\XOOPS X\html\modules\message\admin\class\myInstaller.class.php on line 16

    ダメだ!ほとんど使いものにならないのではないか?警告があまりうるさいのでデバッグモードを止めてみたが,却って完全な白紙のハング状態になってしまう.完全なクリーンインストールをやっているのだから,エラーなしでインストールできなくてはならないと思うのだが…ここまで動きが悪いと手も足も出ない.あと試せる方法としてはXOOPS Xを止めて公式版のXOOPS Cubeをインストールしてみるくらいしかない…特にエラーが発生するたびに管理者パスワードが書き換えられるというのはルール違反ではないのか?Xupdateを使うためには常時ネットに接続していなくてはダメらしいというところも致命的なところだ.しかし,XOOPS Cube Legacy 2.2.3というと2014/4/3まで戻ってしまう.逆に言えばそれだけ安定しているということかもしれないが…2.2.3というのはベータ版だ.そこで止まってしまっているというのもかなり考えものだ.2.2.2というのは一度ダウンロードしたことがある.

    legacy-r2_2_03_Beta_1をダウンロードした.XoopsCubeとリネームしてインストールしてみよう.⇒これは英語版だ.データベースを生成する時点でFatal errorになってしまう.

    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in D:\XoopsCube\html\class\database\mysqldatabase.php:86 Stack trace: #0 D:\XoopsCube\html\install\class\dbmanager.php(51): XoopsMySQLDatabase->connect(false) #1 D:\XoopsCube\html\install\class\dbmanager.php(62): db_manager->connectDB(false) #2 D:\XoopsCube\html\install\wizards\install_checkDB.inc.php(14): db_manager->isConnectable() #3 D:\XoopsCube\html\install\index.php(100): include(‘D:\\XoopsCube\\ht…’) #4 {main} thrown in D:\XoopsCube\html\class\database\mysqldatabase.php on line 86

    xamppとXOOPSを一旦原状回復するという方向に方針変更した

    昨日はphp.ini-developmentをタブレットで半分くらい読むうち寝てしまった.xamppとXOOPSの最新版上にサイトイメージを組み込むという方針を撤回して,xamppとXOOPSを以前の状態に戻して一旦原状回復するという方向に切り替えたのだが,データベースが開けない状態になっている.phpMyAdminが使えるようになっていればその上で調整することは可能だが,phpMyAdminはPHP5.3以上でないと使えない.PHPのバージョンを上げるというのはそれほど難しくないと思ったのだが,なかなかうまくゆかない.xamppのバックアップはEverythingを導入してざっと確認した限りでは現在使っている一種類以外はどこにも保存されていないように思われる.XOOPSはEドライブの「自家サーバ」フォルダにあるものが最新でSQLも95MBというのが残っている.おそらくこれがベストなのではないかと思う.

    PHP5.3.29のパッケージにはphp.iniは入っていない.現状PHP5.3.29をコピーしただけの状態になっているので,まずphp.iniを整備して動かすといころから初めなくてはならない.作業に掛かる前にmysqlとXOOPSの始業時バックアップを取っておくことにしよう.Dドライブには90GBの空き領域があるのでまだまだ余裕だ.php.iniをゼロから書き直すのも大変なのでxampp 2007に入っているものをコピーしてみる.⇒xamppを起動すると*** WARNING: Directory mismatch ***という警告が出て,Apacheを起動してもすぐ落ちてしまう.

    image

    ネット上に「これはレジストリの問題だ」という回答があった.regeditで確認したところ\HKEY_LOCAL_MACHINE\SOFTWARE\xamppにはInstall_Dir:C:\xampp, Location:C:\xamppと登録されているので間違っていないように思われる.これらの値は\HKEY_LOCAL_MACHINE\SOFTWARE\xamppの位置にある.しかし,レジストリの以下の場所にはC:\xampp\php\php.iniとC:\Program Files(x86)\PHP\php.iniの値がある.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\7226D23B061375D47942B053CD215891

    また,\Installer\UserData\S-1-5-18\Products\AE12CF527C028E54FA2791CF5DC60474\Features にもXAMPPという文字列が入っている行があるようだ.現在XAMPPもPHPもアプリ登録されていない.HKEY_LOCAL_MACHINE\SOFTWARE\xamppを大文字でXAMPPとしてみたが,動作は変わらない.PHPはすでにアンインストールしているのでProgram FilesのPHPを削除してみよう.⇒動作には無関係のようだ.\HKEY_LOCAL_MACHINE\SOFTWARE\xamppというエントリを削除して,もう一度setup_xampp.batを実行してみることにする.このエントリには4つのサブキーが入っている.

  • Install_Dir:=C:\xampp
  • Language:=en
  • Location:=C:\xampp
  • Version:=7.4.2-0
  •  

    キーを削除してsetup_xampp.batを実行してみたが,レジストリには登録されなかった.とりあえず復元しておこう.ダメだ.検索で出てこない.設定の仕方がまずかったのだろうか?⇒サブキーは値として入力する必要があった.⇒復元できたようだ.しかし,どうもregeditの検索の動作もやや不審だ.修正後に検索したところこれまでに見つかっていないエントリでXAMPPの文字列を見つけ出してきた.いや,探し方がまずかったようだ…画面が変化しないので検索終了と思っていたが,XAMPP→Install_Dir→Location→のように動いていた.

    コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\bam\State\UserSettings\S-1-5-21-3356159307-1250330512-3202486127-1001

    というところに\Device\HarddiskVolume5\Users\babalabo\Desktop\xampp-windows-x64-7.4.2-0-VC15-installer.exeという値が入っている.もう一つ\Device\HarddiskVolume5\xampp\apache\bin\apache.exeというのもある.いやここにはそれ以外もいろいろ入っている.\Device\HarddiskVolume5\xampp\mysql\bin\winmysqladmin.exe,\Device\HarddiskVolume5\xampp\php\php.exe,xampp_restart.exe, xampp_start.exe, xampp_stop.exe, xampp_control.exeなど実行したアプリの履歴がそっくり残っているようだ.

    \HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MariaDBにはEventMessageFile:c:\xampp\mysql\bin\mysqld.exeという値も入っている.コンピューター\HKEY_USERS\S-1-5-21-3356159307-1250330512-3202486127-1001というところには無数と言ってよいくらい各種の記録が残っている,画像ファイル,サウンドその他まで.⇒Apacheが落ちてしまう原因はおそらくこれとは別の問題と考えられるので,とりあえず,このWarningは無視することにしよう.しかし…Appacheが走らないことには何も始まらない.どうしたらよいか?バックアップに戻ってみよう.xampp new 2020-03-07というのがある.これはnewというラベルが付いているが実際は古いものだ.xamppのコントロールパネルが古い.setup_xampp.batを実行してWarningが3件出た.

    image

    AppacheもMySQLも起動できる.いや,勘違いしていた.確かにこれは新しいバージョンのxamppだ.古いxammpのバックアップはxampp 2007とxampp OLDしかない.xampp OLDの方が日付が新しいのでこれを使ってみよう.setup_xampp.batを起動すると

    Sorry…cannot find php cli!
    Must abort these process!

    というエラーになる.xampp-control.exeは実行できる.Appache, MySQLも起動できる.Adminボタンを押すとlocalhostに飛んで,

    Fatal error: Class ‘XCube_Root’ not found in D:\XOOPS\header.php on line 17

    が出る.DocumentRoot は “D:/XOOPS” になっている.httpd.confでxampp\htdocsに切り替えて動作するようになったが,ステータスで見るとMySQLが落ちた状態になっている.xamppのコントロールパネルではグリーンに点灯しているのだが…C:\xampp\security\htdocs\langにjp.phpを追加しておこう.PHPのバージョンは5.2.3,Apache は2.2.4.PHP.iniはC:\xampp\apache\bin\php.iniを使っているとなっているが,ここにはphp.iniファイルは存在しない.phpMyAdminボタンを押すと以下のエラーが出る.

    Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or ‘(‘ in C:\xampp\phpMyAdmin\index.php on line 10

    line 10 の内容は:

    use PhpMyAdmin\Controllers\HomeController;

    だが,多分これはマルチバイトをサポートしていないためではないかと思う.xamppのコントロールパネル→Admin…ではWinMySQLadmin 1.4のパネル(winmysqladmin.exe)が開ける.このパネルでは

    Server=C:/xampp/mysql/bin/mysqld-nt.exe

    のようになっている.いや,そもそもxamppの中でphpフォルダが存在しない状態になっていた.phpはphp.ORGとリネームされたままになっている.⇒こんどはXAMPPのダッシュボードのステータスでもMySQLがグリーンになった.

    XAMPPのphpMyAdminボタンのリンクは http://localhost/phpmyadmin/ となっているが,xampp/htdocsにはphpMyAdminは存在しない.これは少しおかしいような気がする.⇒本来の場所に移動したが,出るエラーは変わらない.オリジナルのxamppでも同じ場所にある.パスを内部で書き換えているのではないだろうか?2007-09-02 XOOPS Eclipse 導入版に入っているphpMyAdminをコピーして使ってみよう.⇒開けた!これで問題は大体解決したような気がする.phpMyAdminの画面は下記のような古い画面だ.

    image

    データベースにはxoopsというデータベースが作られている.登録ユーザはxoopsという管理人だけだ.データベースのユーザはpmaとrootだけ.どちらもパスワードは使っていない.ドキュメントルートをXOOPSに切り替えてみよう.⇒エラーが出た.

    Fatal error: Class ‘XCube_Root’ not found in D:\XOOPS\header.php on line 17

    mainfile.phpが整備されていないためと思われる.これはXOOPSを初期化しようとして白紙のmainfile.phpに変えたためだろう.このファイルはmainfile.dist.phpのコピーのはずだ.オリジナルに切り替えてみよう.⇒以下のエラーになった.

    db selection failed.

    データベースと接続できていないということだろう.しかし,もうphpMyAdminが使えるようになっているのだから恐れるものはない.XOOPSの下にphpMyAdminをコピーしてブラウザから開けるようにしておこう.⇒開いた.あとは,mainfile.phpを調整するだけだ.データベースユーザはroot,パスワードなしになっている.プレフィックスはdc2b69, データベース名はXOOPSに変更したが,SALTが分からない.まぁ,これで行ってみよう.

    今度は別のエラーが出た.

    image

    確かにsessionというディレクトリは存在しない.ここにはsession履歴のようなものが入るらしい.しかし,sessionフォルダを持たないものもある.てか,それが入っているのはXOOPS Xだけだ.とりあえず,その名前のフォルダを作ってみる.これで開けるようになった.

    image

    管理人のIDはXOOPSだがパスワードが分からない.「今すぐ登録?」というボタンがあるので,動作するかどうか試してみよう.⇒結構堅牢に動作している.

    image

    本当にメールを送っているのかどうか?チェックしてみよう.いや,おそらく無理だろう.ネットには接続していない環境だし…このPCではメールの送受信をやっていないので送られてきたとしても受信できない.アカウントを登録するためには一度ネットに出てサーバーと接続しなくてはならない.いや,それでもデータベースには今登録した名前が入っている.user_viewmailというフィールドがある.これがメールアカウントをチェックしたというマークかな?あとは,rankとlevelというのがある.この値を設定してみよう.管理人としてログインできた!Warningがだいぶ出ているが,本番では表示しないようにできるだろう.

    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php line 25
    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php line 26

    アカウント編集画面で個人情報に書き込みをして実行でエラーが出て停止してしまった.

    Module File for pico Not Found!Notice [PHP]: Undefined property: D3LanguageManager::$my_language in file D:\XOOPS\preload\SetupAltsysLangMgr.class.php line 70
    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\modules\user\actions\EditUserAction.class.php line 92
    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\core\XCube_Controller.class.php line 238

    babalaboからxoopsにメッセージを送信してみた.ただし,これはxoopsでログインしないと見えない.picoというモジュールだけはインストールされているようだが,HOME画面でpicoのボタンを押したら Object not found! エラーになった.picoというモジュールの代わりにpico1とpico2が入っている.⇒xoopsのパスワードを設定しログインしてみたところ,受信箱には送信したメッセージが入っていた.まぁまぁに動作しているとは言えそうだ.XOOPSにはそれに相当するSQLが残っているので,これをロードして動作を見ることにしよう.まずはバックアップを取っておこう.xamppも丸ごとコピーしておく.XOOPSはXOOPS 2020-03-08 GOODの名前で保存した.SQLも別に保存してみよう.

    このphpMyAdminはエキスポートデータをコンソール出力するだけでファイルには保存してくれない…PDF形式を選択したらファイルに保存された.改めてSQLを選択したら保存できた.おそらく操作しないとデフォルトの「テキストを開く」の動作になってしまうのだろう.localhost.SQLですべてのデータベースを出力した.SQLファイルは保存したXOOPSフォルダに格納しておくことにしよう.この方が確実なのではないかと思う.XOOPSにはmysql31.chicappa.jp.sqlというSQLが入っているのでこれをインポートしてみる.サイズは99,468MB,更新日時は2012‎年‎3‎月‎12‎日、‏‎19:26:02.東北大震災の後なのでおそらくほとんど最終形態に近いのではないかと思う.

    ここに入っているのはOA00090878_babalaboだけだ.すでにXOOPSというデータベースを持っているが,これは残したままインストールしてみる.「アップロードしようとしたファイルが大きすぎるようです。」エラーになった.phpMyAdminのドキュメントによれば,version 2.7.0以降ではこのようなエラーは起きないことになっているとされる.このphpMyAdminのバージョンは2.10.3だからこの条件をクリアしている.

    php.iniでupload_max_filesize, memory_limit and post_max_sizeを大きくするというのは前にもやっているが,読み込めるようにならなかったような気がする.post_max_size と memory_limit は upload_max_filesize より大きい必要があるという話もある.もし,これらでアップロードできない場合にはFTPないしSCPでアップロードするというオプションもある.また,BigDumpのようなツールを使ってファイルを分割する法,shell コマンドで送るという方法もある.とりあえず,以下のように設定してみた.

    • upload_max_filesize 120M
    • memory_limit  200M
    • post_max_size          200M

    やはりダメだった.自分で分割してみることにしよう.20115行目から下の部分を別ファイルとすることにする.⇒ダメだ.ほぼ当分割したつもりだが,Aが13MiB,Bが87MiBという不等分割になってしまった.カーソル位置で目星を付けたのだが,行番号で言うと43751行あるので,22000行くらいで切らなくてはならない.いや,前回20115行目で分割して上記のように7倍近い差になるというのはかなりおかしい.後半になると一行の文字数が大きくなっているのではないか?30000行くらいで分割してみることにする.zelkova_xpress_postsはブログへの投稿なのでおそらくここが肥大しているのだろう.これが始まるのが22552なのでこれを全般に含めなくてはならないだろう.しかし,そうすると後半の開始行が35190になってしまう.これでは後半部が小さ過ぎる.

    むしろxpressだけを1ファイルにするというのが妥当なのではないか?前半部Aが31113行になったが,サイズは14MiBしかない.xpressの部分はおそらくさらに分割しないとインポートできないと思われる.後半部Bは12661行で86MiBだ.どこかで40MBという制限を読んだ記憶があるが,もしそうだとするとBは2分割してもロードできないことになる.まぁともかくやってみよう.Aをインポートして以下のエラーになった.

    #1044 – Access denied for user ‘root’@’localhost’ to database ‘information_schema’

    このエラーは前から出ているが,’information_schema’はすでに存在しているからではないだろうか?information_schemaデータベースに書き込みないし生成している.生成しているのはCHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_APPLICABILITY,COLUMNS,COLUMN_PRIVILEGES,KEY_COLUMN_USAGE,PROFILING,ROUTINES,SCHEMATA.SCHEMA_PRIVILEGES,STATISTICS,TABLES,TABLE_CONSTRAINTS,TABLE_PRIVILEGES,TRIGGERS,USER_PRIVILEGES,VIEWSで,うち書き込みしていないテーブルにはCOLUMN_PRIVILEGES,PROFILING,ROUTINES,TABLE_PRIVILEGES,TRIGGERS,VIEWがある.

    確かにinformation_schemaには何も書き込まれていないようだ.これでは多分うまく動かないと思う.ちなみにこのデータベースには725人のユーザが登録されている.試みにこの状態でどんな動きになるのかアクセスしてみよう.⇒XOOPSの方の対応修正が入っていないので今のところは前回の状態のままだ.⇒XOOPS/mainfile.phpに対応修正を入れた.⇒localhostで画面が真っ白になって中に入れない.エラーは表示されていない.

    やはり,’information_schema’への書き込みは動作に不可欠なものと見える.データベースとテーブルがすでに存在しているときのデータの追加・更新のプロトコルを調べる必要がある.⇒use でデータベースを指定してあとはレコードをinsertでよいのではないか?テーブルはIF NOT EXISTで存在しない場合にのみ生成するというのでよいと思う.

    レコードが存在するときはinsertしないという指定もできる.①INSERT IGNORE, ②INSERT … SELECT.前者はエラーを無視して単に続行するという動作,後者はSELECT文で条件が満たされる場合にのみ挿入という方式だ.前者ではデータに(ユニークカラムで)不整合が発生する可能性がある.データベースの形式が変化しない限りはinformation_schemaへの書き込みは不要だから,通常の操作としては対象データベースのエキスポート→インポートで間に合うはずだ.いや,データベースを一度ドロップして再ロードするという場合にはやはり’information_schema’への書き込みは必要になるのではないか?

    前回のインポートではinformation_schemaには何も書き込まれていない.これは無条件でデータベースを生成しようとしためなのか,何か他に理由があるのかどうか?SQL文を作ってテストしてみる必要がある.

    incredibuildという知らないソフトがバックグラウンドで走っている.イスラエル製品だ!分散ネットワーク上で開発プロセスの並列実行を可能にするというのだが,こんなものを導入した記憶はない.サービスとして実装されているのだろうか?プログラムと機能のリストには現れていない.IIS 10.0 Expressというのもインストールした記憶はない.Unityというのがあるがこれは何だろう?⇒いや,あった.Xoreax IncrediBuild 9.3.2 (Build 2457)というラベルが付いていた.IIS 10.0 ExpressとはIIS Webサーバーの簡易版という感じだが,不用だろう.Unityというのはゲームエンジンないしゲーム開発環境のようだ.これもまったく記憶がない…それにしても昨日,今日の訪問者数が20台に激減しているというところが不思議…

    昔は初期設定されたパスワードをそのまま使うというのが普通だったのかもしれない

    ゼルコバの木ユーザ会サイトのトップページが表示されるようになったというのは前進と言ってよい.統合しようとしている3つのサイトのうち最初の2つ,①WordPressで構築された現サイト(ゼルコバの木テント村),②馬場研究所のレガシーHP(冷たい森),今回表示さた「トップページ」というのは三番目の③XOOPSで構築された旧ゼルコバの木ユーザ会クラブハウスイメージの極小の片鱗だ.少なくとも原理的にはこの目標を達成することは可能であることが示されたと言ってもよいのではないかと思われるが,道はまだまだ果てしなく険しい.

    どこをどう変えてそうなったのかよく分からないがトップ画面の左サイドバーに表示されているメニューの内容が変化している.このメニューには「屋根裏部屋」と「ニュースディスク」が表示され,ユーザメニューでアカウントを操作することができるようになっているのでこちらが本チャンだ.トップページに表示されている「重要:バグレポートに登録するためにはログインが必要になりました」はかなり長い期間そのままになっていたように思われるが,最終的には新しい投稿の下に隠されるようになっていたのではないかと思う.もしそうであるとしたら,ユーザ会サイトの最終イメージにはまだ届いていない.

    もうひとつ,現在のバージョンには非常に不審な点がある.これまで気付かなかったが登録メンバーのパスワードの大半が書き換えられているという事実が判明した.管理人のパスワードが書き換えられるということはこれまでにもしばしば発生していたが,これは「エラーが発生したときには(外部からのアタックと判断し)自動的に管理人パスワードをロックする」という動作になっているためではないか?と考えてきたのだが,まったく触れてもいないユーザのパスワードが大量に書き換えられていたとすれば,それ自体攻撃と考えるしかない.

    現在テストしているサイトイメージは‎2010‎年‎11‎月‎18‎日更新のmysql31.chicappa.jp.sqlが原型だが,このファイルではすでにパスワードの大量書き換えが発生している.更新日付から見るとデータベースをエクスポートした時点ですでにこのような状態になっていたようにも思われるが,パスワードがすべて残っているバージョンもあるので少し精査しなくてはならない.同じ更新日付のmysql31.chicappa.jp.GOOD.sqlでは事象は発生していない.これはどういうことだろう?YOMOGI 2011-11-27に入っているSQLではすでに書き換えが発生している.YOMOGI 2011-11-14も同様.YOMOGI 2011-08-28,SHARED\YOMOGIも同じだ.

    逆に壊れていないSQLをどこから拾ってきたか?という方が問題になりそうだ.2007 SUMMERにはサイトからエクスポートされたSQLは入っていない.自家サーバ\XOOPSのSQLも書き換えられている.G.KEIKO\共有ドキュメント\ゼルコバの木ユーザ会\ユーザ会会員名簿\2010-05-04 MySQLも異なるコードが使われているがほぼ全員同一パスワードになっている.同じドライブのSHARED\YOMOGIも同様,YOMOGI 2011-08-28,YOMOGI 2011-11-14,YOMOGI 2011-11-27,YOMOGI 2012-01-24 ATTACK後,2010-05-04 MySQL\OA00090878_babalabo.sql,共有ドキュメント\ゼルコバの木ユーザ会\ユーザ会会員名簿\2010-05-04 MySQLのOA00090878_babalabo.sqlも同じ.I.YOMOGI,J.BACKUPにはSQLファイルは存在しない.

    E:\ZELKOVA 2018 BACKUP\ゼルコバの木ユーザ会\ユーザ会会員名簿\2010-05-04 MySQLに入っているOA00090878_babalabo.sqlも同様.E:\lenovo 個人データ Backup 2018-12-15\Downloads\YOMOGI 2011-06-23,mysql.2010-11-18.sql,E:\lenovo 個人データ Backup 2018-12-15\Downloads\YOMOGI2も同様だ.参った.パスワードが壊れていないデータが見つからなくなってしまった.目の錯覚だったのだろうか?

    少なくともどの時点かで「パスワードに問題がないファイルは存在していた」と思われるのだが,見た限りではごく一部のメンバーを除いてほとんどすべてのユーザのパスワードが同じになっている.ユーザ登録の時点では共通の「初期パスワード」を与えてそれを書き換えていないということも考えられなくはないが,ファイルによって「共通パスワード」が変わるということは起こりそうもない.少なくとも二種の異なるパスワードが使われているように見える.

    よく見るとちらほら異なるパスワードが入っているのが見つかる.どうもこれは大半のユーザは共通パスワードのまま放置しているのではないだろうか?パスワードなど誰も必要としない牧歌的な時代だったからそのようなことがあったとしても不思議ではない…ゼロ・トラストの現代では考えられないことだが…ログアウトしたら最初の画面に戻ってしまった.屋根裏部屋などがサイドバーに表示されなくなった.ユーザ情報というメニューもないのでログインすることもできない.⇒どうも,この先が見えない.やなり一度戻ってPHPのバージョンを下げ,XOOPSをオリジナルの形姿で動作させるところから始めるしかないのではないか?⇒バックアップは今日の始業時に取ってある.まず,xamppを古いバージョンに戻してみる.

    現在のxamppはインストールしないで使われていたようだ.xampp NOWというバージョンがある.これは最後に動かしていたものと思われるので,まずこれを試してみよう.このフォルダにはapache, apache24 Win32, apache24 Win64の3つのapacheが入っている.phpもphp, php-7.4.3-Win32-vc15-x64,php-7.4.3-Win32-vc15-x86の3本が入っている.これらはxammp 2007に初めから入っていたものだ.どうも何かがうまく行っていないようだ.xampp-controll.exeが走らない.xampp_start.exe→xampp_stop.exeなら起動/停止できるのだが…

    image

    OSを再起動して動作するようになった.xamppのダッシュボードからセキュリティをクリックして以下のエラーになる.

    Warning: include(lang/jp.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\security\htdocs\index.php on line 13
    Warning: include() [function.include]: Failed opening ‘lang/jp.php’ for inclusion (include_path=’.;C:\xampp\php\pear\’) in C:\xampp\security\htdocs\index.php on line 13

    日本語パッケージが入っていない.最初(xampp 2007)からそうだ.各国のファイルは入っているのだが…xampp OLDには入っている.これらはすべて同じ系列のなずなのだが…いや,このバージョンにも入っている.場所が違うだけだ.C:\xampp\htdocs\xampp\langに入っていた.⇒コピーした.

    • これらのXAMPPページは一般的にネットワーク経由でアクセス可能です。
    • MySQLユーザルートにパスワードがありません
    • PhpMyAdminのログインパスワードが有効になりました

    などのメッセージが出ている.mysqlはポート3306/tcpを使っている.Apache 2.2.4,PHP 5.2.3,MySQL 5.0.45がインストールされている.phpMyAdminが起動できない.⇒xamppのコントロールパネルからWinMySQLadminを起動することはできる.XOOPSをDocumentRootに設定してみよう.⇒以下のエラーになる.

    Fatal error: Unable to connect to database in D:\XOOPS\class\database\databasefactory.php on line 34

    その前にXOOPSのバックアップを取っておこう.D:/xoops_trust_pathもコピーしておいた方がよいかもしれない.mainfile.phpではデータベースのユーザ名はroot,パスワードなしになっているのこれでよいはずなのだが…もう一度xamppに戻って確認してみよう.my.cnfでもパスワードなしになっているのだが,phpMyAdminを起動できない.

    Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or ‘(‘ in C:\xampp\phpMyAdmin\index.php on line 10

    xamppにはinstall/install.phpというのがある.これをやっていないためではないか?そのためにはapacheからxamppが見えるようにする必要がある.⇒これはsetup_xampp.exeと同等だ.以下のメッセージが出るだけだ.

    Sorry, but … nothing to do!

    index.phpの10行目というのは

    use PhpMyAdmin\Controllers\HomeController;

    というだけだ.この問題は以下に回答がある.

    Error Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING [closed]

    Make sure they are running PHP 5.3 or later. If they are running an earlier version they won’t have support for namespaces.

    このエラーは前にも起きている.このときはxamppのバージョンを上げて対処しているはずだ.今は古いバージョンを動かそうとしているのだから,むしろXOOPSのバージョンを下げなくてはならないのではないか?このXOOPSはネットから取り出したものである可能性がある.一度これを放棄してEドライブの自家サーバーに入っているものを使ってみよう.このXOOPSはサイトで使われていた現物と思われる.⇒XOOPS/mainfile.phpを書き直したが,以下のエラーになる.

    db selection failed.

    DBユーザをroot,パスワードなしとしているのだが…おそらくxamppのMySQLのデータベースは空になったままと思われる.すでにここではXOOPSを起動しようとしているのでファイルがないと起動できないのではないか?mainfile.dist.phpをmainfile.phpにコピーして起動してみたが以下のエラーになる.

    Fatal error: Class ‘XCube_Root’ not found in D:\XOOPS\header.php on line 17

    このXOOPSには97.1MBのSQLが入っている.おそらくこれは最新に近いものと思われるので,ここで動かせればサイトをほとんど復元できる可能性があるのだが…これとペアになるxamppを決定することができない.このバックアプを取るときにxamppをバックアップしておけばよかったのだが…

    エクスプローラの検索ではファイルの中身を検索してしまうので,フォルダ・ファイル名検索専用のEverythingというツールをインストールした.これでxamppが残っている場所がすべて検出できた.しかし,現物のxamppの数はかなり限られている.実際,これまでに試してみたものがそれらのすべてと言ってよいくらいだ.つまり,2007 SUMMERだけのようだ.phpMyAdminを走らせることができればMySQLの中身をチェックできるのだが,そのためにはPHP5.3以上が必要になる.どこかでphpの古いバージョンを探した方が早いかもしれない.PHP5.3というのはすでにサポート終了している.アーカイブがあった.ここにはWindows用のバイナリがある.

    https://windows.php.net/downloads/releases/archives/

    とりあえず,5.3.29というのをダウンロードしてみることにしよう.msiでダウンロードしたが,むしろzipの方がよかったのかもしれない.いや,いま展開しているxamppの中にもPHP4は入っているようだ.xammpではPHPの切り替えができたはずだからどうなっているのか見てみよう.いや,PHP4に戻しても仕方ない,PHP5.4に変えたいのだから…⇒php-5.3.29-Win32-VC9-x86というのをインストールしてみた.Extensionに関するエラーが続出するので暫定的にそれらをすべて止めることで辛うじて走るようにはなった.phpMyAdminもエラーを出さずに開くことはできるが,で文字化けしてしまう.これはmbstringを導入していないためと思われる…

    zend_ini_string_ex がダイナミックリンクライブラリ ../php_mbstring.dll から見つかりませんでした.

    extension_dir=”C:\xampp\php\ext” を extension_dir=”C:\xampp\php\extensions” のように書き換えたら上記のエラーはすべて解消したが,文字化けは解消しない.

    ゼルコバの木ユーザ会サイトのトップページが表示された

    XOOPS X の最新版をインストールした.PHPのバージョンの問題が尾を引いていると見えて不具合はあちこちで噴出してくるが,強引に押し込んでとりあえず何とか動く状態にはなっている.方針を変更してこの上にユーザ会サイトイメージを逆移入してみるということにしたのだが,果たして可能だろうか?MySQLはテーブル単位のインストールができるのでそれぞれのテーブルが完全に独立した作りになっていれば,それらを個別にインポートすることで動作させるようにできる可能性はあるが,見通しとしてはかなり難しいのではないかという気がしている.従って,ここでの課題は「このような方針のもとでどこまで復元できるか?」ということになる.ユーザ登録テーブルに関しては完全にクリアできたと言ってよいと思われるので,重点は①マニュアル(オンラインヘルプ)と②作業ログ(屋根裏部屋)が復活できるか否かという点に掛かっている.

    データベースのバックアップには150個くらいのテーブルがあったはずだが,XOOPS Xに載せているのはユーザテーブルを入れても42個しかない.また,これら42個もこのまま使えるというものではないので差し替えないし改編を必要とするものと考えられる.少なくとも作業ログを閲覧するためには xpress というモジュールが必要だ.マニュアルを編集するために使っていたのはpicoというモジュールだったと思う.データだけでなくそれらを表示する場所も必要なのでブロックテーブルなども必要になってくるはずだ.フォーラム用のモジュールとしてはd3forum,ニュース配信用のbulletinが入っていたが,ゼルコバ通信の発行にはevennewsを使っていたのではないかと思う.mantisはかなり大きいモジュールだが復元できなければそれはそれまでだ.smartfaqというFAQ用のモジュールもあった.とりあえず,XOOPSからすべてのモジュールをコピーしてみよう.

    XOOPSにはpicoとpmというモジュールは入っているが,それ以外は何も追加されていない.「自家サーバ」には旧バージョンを含めて33個のモジュールが入っている.おそらくこれがすべてだろう.XOOPSXが49MB,xamppが1GBある.XOOPSXの49MBはいいとして,xamppの1GBを毎日バックアップするのは大変だ.MySQLだけで555MBある.phpMyAdminは50MBだ.phpMyAdminはともかくMySQLはバックしなくてはならないだろう.XOOPSXというフォルダ名をXOOPS Xに変えた.

    起動して再ログインしようとしてエラーになった.パスワードがまた書き換えられている.protectorは完全に停めてあるはずなのだが…「自家サーバー」からmoduleとxoops_trust_pathの全内容をコピーした.どうもどこかでパスワードが書き換えられているような気がする.ログインした時点で書き換えが起きている.いよいよPHPのデバッグをやるしかないのだろうか?コピーしたprotectorもリネームして完全に止めたのだが,まだ再発する.モジュールとテーマを完全に補充し,データベースを復元してlocalhostでXOOPS Xを開こうとしたら以下のエラーになった.

    Parse error: syntax error, unexpected ‘new’ (T_NEW) in D:\XOOPS X\html\modules\pm\preload\Preload.class.php on line 10

    pmというモジュールは使っていないようなので削除してみる.同じエラーがdbtheme,cubeUtils,bulletinでも出る.⇒これらをすべて削除して例の「このサイトはただいまメンテナンス中です」の画面に出た.ログインして下記になった.

    Fatal error: require(): Failed opening required ‘D:/XOOPS X/xoops_trust_path/modules/protector/xoops_version.php’ (include_path=’C:\xampp\php\PEAR’) in D:\XOOPS X\html\modules\protector.BAD\xoops_version.php on line 11
    Deprecated [PHP]: Array and string offset access syntax with curly braces is deprecated in file D:\XOOPS X\xoops_trust_path\modules\pico\preload.php line 40 (2)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; LegacyNon_installation_moduleHandler has a deprecated constructor in file D:\XOOPS X\html\modules\legacy\class\non_installation_module.php line 20 (1)
    Warning [PHP]: require(D:/XOOPS X/xoops_trust_path/modules/protector/xoops_version.php): failed to open stream: No such file or directory in file D:\XOOPS X\html\modules\protector.BAD\xoops_version.php line 11 (1)

    protector.BADを強引に読み出そうとしているように思われる.protectorに関するフォルダを全部パージしてみた.

    image

    上のリストの下位5本のモジュールはすべてパージした.これで例の3本を挙げた「以下のモジュールが導入されていません」になる.しかし,エラーが発生してこれ以上前に進めない状態だ.⇒XOOPS Xのテーブルから補充することができるのではないか?モジュールはzelkova_modulesに登録されている.profileに関してはzelkova_profile_dataとzelkova_profile_definitionsが定義されている.xupdateに関してはzelkova_xupdate_modulestore,zelkova_xupdate_storeが使われている.zelkova_xupdate_modulestoreの中には導入可能なモジュールがあらかじめ登録されている.これも有難迷惑という感じだ…zelkova_modulesを比較してみよう.

    (2, ‘互換モジュール’, 203, 1583430004, 1, 1, ‘legacy’, ”, ”, 0, 1, 0, 0, 0, 0),
    (3, ‘互換レンダーシステム’, 203, 1583413196, 1, 1, ‘legacyRender’, ”, ”, 0, 1, 0, 1, 0, 0),
    (4, ‘ユーザーモジュール’, 203, 1583413196, 1, 1, ‘user’, ”, ”, 0, 1, 0, 1, 0, 0),
    (5, ‘プロフィール’, 203, 1583413196, 1, 1, ‘profile’, ”, ”, 0, 1, 0, 0, 0, 0),
    (6, ‘標準キャッシュモジュール’, 203, 1583413196, 1, 1, ‘stdCache’, ”, ”, 0, 1, 0, 0, 0, 0),
    (7, ‘ALTSYS’, 82, 1583430241, 0, 1, ‘altsys’, ‘altsys’, ”, 1, 1, 0, 1, 0, 0),
    (8, ‘導入・アップデート管理’, 74, 1583430251, 0, 1, ‘xupdate’, ‘xupdate’, ”, 0, 1, 0, 1, 0, 0),
    (9, ‘プライベートメッセージ’, 119, 1583430346, 1, 1, ‘message’, ”, ”, 1, 1, 0, 1, 0, 0),
    (10, ‘Protector’, 352, 1583430363, 1, 1, ‘protector’, ”, ”, 0, 1, 0, 1, 0, 0);

    (2, ‘互換モジュール’, 107, 1268069849, 0, 1, ‘legacy’, 0, 1, 0, 0, 0, 0),
    (3, ‘ユーザーモジュール’, 107, 1269039826, 0, 1, ‘user’, 0, 1, 0, 1, 0, 0),
    (4, ‘互換レンダーシステム’, 107, 1268069884, 0, 1, ‘legacyRender’, 0, 1, 0, 1, 0, 0),
    (5, ‘標準キャッシュモジュール’, 107, 1267998733, 0, 1, ‘stdCache’, 0, 1, 0, 0, 0, 0),
    (6, ‘ALTSYS’, 71, 1266935228, 0, 1, ‘altsys’, 1, 1, 0, 1, 0, 0),
    (7, ‘プライベートメッセージ’, 107, 1267998733, 0, 1, ‘pm’, 0, 1, 0, 1, 0, 0),
    (8, ‘Protector’, 340, 1267998733, 0, 1, ‘protector’, 0, 1, 0, 1, 0, 0),
    (9, ‘系図ファイルアーカイブ’, 147, 1269247926, 70, 1, ‘Archive’, 1, 1, 1, 1, 0, 1),
    (10, ‘ゼルコバの木ダウンロード’, 147, 1269242625, 65, 1, ‘DownLoad’, 1, 1, 1, 1, 0, 1),
    (12, ‘ユーザ会ニュース’, 221, 1267435553, 20, 1, ‘bulletin’, 1, 1, 1, 1, 1, 1),
    (33, ‘屋根裏部屋’, 235, 1290055477, 100, 1, ‘xpress’, 1, 1, 1, 1, 0, 1),
    (19, ‘ユーザ会フォーラム’, 85, 1268860980, 40, 1, ‘d3forum’, 1, 1, 1, 1, 0, 1),
    (67, ‘cubeUtils’, 70, 1269047284, 1, 1, ‘cubeUtils’, 0, 1, 0, 1, 0, 0),
    (21, ‘テーマ編集’, 50, 1266935237, 0, 1, ‘dbtheme’, 1, 1, 0, 1, 0, 0),
    (35, ‘ゼルコバの木の育て方’, 182, 1269206480, 55, 1, ‘pico2’, 1, 1, 1, 1, 0, 1),
    (61, ‘バグレポート’, 100, 1270463407, 60, 1, ‘mantis’, 1, 1, 1, 1, 0, 0),
    (64, ‘Happy Linux Framework’, 150, 1268168955, 0, 1, ‘happy_linux’, 0, 1, 0, 0, 0, 0),
    (66, ‘ゼルコバの木の使い方’, 182, 1269904140, 30, 1, ‘pico1’, 1, 1, 1, 1, 0, 1),
    (65, ‘Webリンク集’, 194, 1267805806, 80, 1, ‘weblinks’, 1, 1, 1, 1, 1, 1),
    (72, ‘ニュースデスク’, 210, 1273160246, 100, 1, ‘evennews’, 1, 1, 0, 1, 0, 0),
    (73, ‘Tell a Friend’, 105, 1268687838, 0, 0, ‘tellafriend’, 1, 1, 0, 1, 0, 0),
    (78, ‘メールアドレス変更’, 110, 1289992201, 0, 1, ‘changemail’, 1, 1, 0, 0, 0, 0),
    (79, ‘ユーザー名変更’, 100, 1289992201, 0, 1, ‘resetuname’, 1, 1, 0, 1, 0, 0),
    (77, ‘なんでも質問箱’, 108, 1269386038, 25, 1, ‘smartfaq’, 1, 1, 1, 1, 1, 1),
    (80, ‘登録メール再送信’, 100, 1289992201, 0, 1, ‘resendmail’, 1, 0, 0, 0, 0, 0);

    問題は両者で共通なモジュールのmidが異なるないしかち合うという点だ.ともかく新しい版の構成を優先してリストを作り直してみよう.Archiveの9とDownLoadの10をそれぞれ11, 13に変えてみる.存在しないモジュールの欄はカットしてもよいが,このまま残して.zelkova_profile_data,zelkova_profile_definitions,zelkova_xupdate_modulestore,zelkova_xupdate_storeを追加してみる.以下のエラーが出た.

    #1136 – 1 行目で、列の数が値の数と一致しません。

    zelkova_modulesのテーブル構成が変化しているのだろうか?確かに大分変わっている.

    CREATE TABLE IF NOT EXISTS `zelkova_modules` (
      `mid` smallint(5) unsigned NOT NULL auto_increment,
      `name` varchar(150) NOT NULL default ”,
      `version` smallint(5) unsigned NOT NULL default ‘100’,
      `last_update` int(10) unsigned NOT NULL default ‘0’,
      `weight` smallint(3) unsigned NOT NULL default ‘0’,
      `isactive` tinyint(1) unsigned NOT NULL default ‘0’,
      `dirname` varchar(25) NOT NULL default ”,
      `hasmain` tinyint(1) unsigned NOT NULL default ‘0’,
      `hasadmin` tinyint(1) unsigned NOT NULL default ‘0’,
      `hassearch` tinyint(1) unsigned NOT NULL default ‘0’,
      `hasconfig` tinyint(1) unsigned NOT NULL default ‘0’,
      `hascomments` tinyint(1) unsigned NOT NULL default ‘0’,
      `hasnotification` tinyint(1) unsigned NOT NULL default ‘0’,
      PRIMARY KEY  (`mid`),
      KEY `hasmain` (`hasmain`),
      KEY `hasadmin` (`hasadmin`),
      KEY `hassearch` (`hassearch`),
      KEY `hasnotification` (`hasnotification`),
      KEY `dirname` (`dirname`),
      KEY `name` (`name`(15))
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=81 ;

    CREATE TABLE `zelkova_modules` (
      `mid` smallint(5) UNSIGNED NOT NULL,
      `name` varchar(150) NOT NULL DEFAULT ”,
      `version` smallint(5) UNSIGNED NOT NULL DEFAULT 100,
      `last_update` int(10) UNSIGNED NOT NULL DEFAULT 0,
      `weight` smallint(3) UNSIGNED NOT NULL DEFAULT 0,
      `isactive` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
      `dirname` varchar(25) NOT NULL DEFAULT ”,
      `trust_dirname` varchar(25) NOT NULL DEFAULT ”,
      `role` varchar(15) NOT NULL DEFAULT ”,
      `hasmain` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
      `hasadmin` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
      `hassearch` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
      `hasconfig` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
      `hascomments` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
      `hasnotification` tinyint(1) UNSIGNED NOT NULL DEFAULT 0
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

    trust_dirnameというのは新版にはない.roleという列もない.PRIMARY KEYといくつかのKEYが新たに定義されている.いや,間違えた.下の方が新しい定義だ.つまり,trust_dirnameとroleが追加され,KEY定義がすべて抹消されている.MyISAM DEFAULT CHARSETもutf8からutf8mb4に変化している.KEYという用語はどこにも使われていない.AUTO_INCREMENT=81は残しておこう.修正を入れたのにまったく同じエラーになった.⇒INSERT INTO `zelkova_modulesの一行目を書き換えていなかった.

    静的解析で大量のエラーが発生した.

    解析中に 270 個のエラーが見つかりました。

  • ステートメントの開始があるべきです。 (near “11” at position 1)
  • ステートメントの開始があるべきです。 (near “‘系図ファイルアーカイブ'” at position 5)
  • ステートメントの開始があるべきです。 (near “147” at position 20)
  • ステートメントの開始があるべきです。 (near “1269247926” at position 25)
  •  

    追加するところに’,’を入れ忘れていた.⇒一応通った.以下のエラーは前から出ている.

    #1044 – ユーザー ‘root’@’localhost’ の ‘information_schema’ データベースへのアクセスを拒否します

    どうもまだまだエラーが続きそうだ.

    Module File for cubeUtils Not Found!Module File for bulletin Not Found!Module File for mantis Not Found!Module File for mantis Not Found!
    Fatal error: Uncaught Error: Call to undefined function ereg() in D:\XOOPS X\xoops_trust_path\templates_c\localhost-default-astro2^%%FD^FD5^FD50D30C%%theme.html.php:5 Stack trace: #0 D:\XOOPS X\xoops_trust_path\libs\smarty\Smarty.class.php(1278): include() #1 D:\XOOPS X\html\modules\legacyRender\kernel\Legacy_RenderSystem.class.php(444): Smarty->fetch(‘astro2/theme.ht…’) #2 D:\XOOPS X\html\modules\legacyRender\kernel\Legacy_RenderSystem.class.php(331): Legacy_RenderSystem->renderTheme(Object(Legacy_ThemeRenderTarget)) #3 D:\XOOPS X\html\modules\legacy\kernel\Legacy_Controller.class.php(951): Legacy_RenderSystem->render(Object(Legacy_ThemeRenderTarget)) #4 D:\XOOPS X\html\modules\legacy\kernel\Legacy_Controller.class.php(920): Legacy_Controller->_executeViewTheme(NULL) #5 D:\XOOPS X\html\footer.php(36): Legacy_Controller->executeView() #6 D:\XOOPS X\html\index.php(16): require_once(‘D:\\XOOPS X\\html…’) #7 {main} thrown in D:\XOOPS X\xoops_trust_path\templates_c\localhost-default-astro2^%%FD^FD5^FD50D30C%%theme.html.php on line 5

    cubeUtils,bulletin,mantisの行をパージしてみる.⇒最初の一行目は消えたが,その後は同じ.astro2というのは前に使っていたテーマだ.何か欠けているものがあるのだろうか?これは描画に関係するものだ.確かに自家サーバ\XOOPS\templates_cにはいろいろなファイルが入っている.templates_cはmodulesと同じ階層にあるフォルダだが,新版にはこのようなものはない.とりあえずコピーしてみよう.xoops_trust_pathにはある.上書きしてみよう.まったく変化しない.D:\XOOPS X\xoops_trust_path\templates_c\localhost-default-astro2^%%FD^FD5^FD50D30C%%theme.html.phpというファイルで参照しているeregという関数が存在しないということのようだ.この関数はPHPに含まれているはずだが,PHP4ないし5でしか使われない.PHP 5.3.0で非推奨となり,PHP7では削除されている.⇒この部分をコメントアウトしてとりあえず動いた.確かにこの画面だ.

    image

    どの程度動くものか試してみよう.トップページの記事には「重要:バグレポートに登録するためにはログインが必要になりました」というタイトルが付いている.これはmantisがDDOS攻撃を受けて閉鎖に至った経緯を述べているものだ.日付は分からないが,この時期以降はサイトの更新頻度もかなり落ちているはずだから,ある程度使い物になる可能性はある.picoを落としてしまったので「ゼルコバの木の使い方」は開けない.「プライベートメッセージ」も動作していない.というか,サイドバーに表示されたメニューは全滅だ.結局カバーページ1ページが開けたに過ぎないという状態だ.最初の画面のメニューには屋根裏部屋は出てこなかったが,ページ切り替え時にログイン画面が出てログインし直したらもっと新しいメニューが出てきた.これは最終的なメニューに近いものと思われる.屋根裏部屋も含まれているが,以下のようなエラーが出るため表示できない.

    お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。Deprecated [PHP]: Array and string offset access syntax with curly braces is deprecated in file D:\XOOPS X\xoops_trust_path\modules\pico\preload.php line 40 (2)

    「ニュースデスク」だけは開けるが,あまり見易いものではない.ゼルコバ通信No.9~11が表示されるが,一部重複がある.

    image

    これを公開できるところまで持ってゆくというのは至難の業に近い…PHPでエラーが出ているのはXOOPSとxamppで使っているPHPのバージョンが違うためと考えられるが,ネットで調べると「XOOPSはPHP7で動作する」という.

    PHP7環境でXOOPS Cubeを動かすには
    http://ryus.co.jp/staffblog/xoopscube-on-php7/

    現在公開されてる最新版のXOOPS X(ten)はPHP7でうごきますので特別何かする必要はありません。 しかしホダ塾ディストリビューションや XOOPS 2.0.xJPはPHP7で動かないのでアップグレードが必要です。 現在稼働中のXOOPサイトをPHP7で動かすには?現在稼働中のXOOPSがXOOPS X(ten)であれば、そのままPHP7で動く可能性が高いです。 ただし利用しているモジュールやバージョンによってはPHP7に対応してないこともあるので、本番環境をいきなりPHP7にバージョンアップするのはやめましょう。 まずはPHP7のテスト環境を用意して、その環境で動作確認してから本番環境をPHP7にしましょう。

    ということのようだ.ロードしたバージョンはXOOPS Xのはずだから,XOOPS本体はPHP7に対応していると考えられる.モジュールを差し替えてゆけば動作するようになるだろうか?xpress(WordPress)の場合,http://www.knts.net/Xlc/modules/pico/index.php?content_id=3 によれば,

    Xoopsに付属のモジュール(アドオンストア>ストア一覧:xpress)、以下の環境ではインストールしてもPHP7では正しく動作しない。
    PHP Version::7.0.15
    MySQL Version::5.7.17
    XOOPS Version::XOOPS Cube Legacy 2.2.3 Beta 1

    とされる.ただし,http://ja.xpressme.info/ からXPressME Version::2.54をダウンロードしてWordPressに組み込むという奥の手があるという.まず,ともかくアドオンストアから最新版のxpresをダウンロードしてみよう.管理画面→互換モジュールでxpressを2.48にアップデートできた.このxpressはXPressMEそのものであるということなので動作してもよいはずなのだが,動作は変化しない.「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」という問題に対処する必要がある.

    PHP7ではMySQL拡張は廃止されているので,以下のいずれかの方法で対処する必要がある.①mysqli, ②PDO_MySQL.MySQL側ではmysqliを使うようになっているはずだから,WordPress側で変える必要があるが,XPressMEはすでにインストールされているのだから,暗礁に乗り上げてしまう. mysqli拡張モジュールというのはあるようだ.xamppのパッケージにはこれが含まれていないということだろうか?現在インストールされているのはxampp-windows-x64-7.4.2-0-VC15-installerで最新版は7.4.3だからそれほど古いものではない.これにはMariaDBというのが入っているが,これがmysqli 拡張を含んでいないということなのだろうか?以下に対処法がある.

    「mysqli 拡張がありません。PHPの設定をチェックしてみてください」 エラーの対処方法
    https://www.projectgroup.info/tips/php/comm_0003.html

    PHP.iniで①extension=php_mysqli.dllと②extension_dir="ext"を設定する.この修正を入れても問題は解決しない.

    〈WordPress・PHP7エラー〉「お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです。」の対処法
    https://money-affairs.com/error-extension-mysqli/

    この記事では,①php.iniでextension=mysqliを設定する,②Apache/httpd.confの229~232行目,279~281行目,「 index.php」を追加などの修正を行う となっている.

    この修正はバックアップを取ってからやることにしよう.

    XOOPS X の最新版をインストールしてある程度まで無害動作するようになった

    XOOPS X の2008年最新版ホダ塾ディストリビューションというのを XOOPS Cube サイトからダウンロードしてインストールした.この版を動かすためにはxamppの最新版を使う必要があるので切り替えたが,MySQLが起動できない状態になっている.この版はこれまでにも何度も動かしているので動かないはずはないのだが…rootユーザのパスワードの問題かもしれない.Reset the MySQL/MariaDB Root Password という手順があるのでやってみよう.これはxamppのコントロールパネルのShellから実行するコマンドだ.⇒いや,ダメだ.この操作を行うためにはそもそもMySQLが走っている必要がある.xampp/mysql/bin/my.ini で管理者パスワードなしに修正したが動作は変わらない.

    mysql_install_db.exe というのがあったのでやってみよう.このデータベースには確かWordPress(テント村)のデータが入っているはずなので,一応 data のバックアップを取っておくことにする.ダメだ.どうもどこかで何かが壊れてしまっているような気がする.いや,mysql_install_db を実行する前に data を空にするかないし削除する必要があるようだ.⇒これで走ったようだ.MySQL はパスワードなしで走っている.データベースは完全に空になっている.これでXOOPS X をインストールすればともかく管理人としてログインできるようになるだろう.このディストリビューションは XOOPS Cube 2.2 となっている.既存のXOOPSデータベースと同じデータベース名・ユーザ名・パスワードで登録した.今回は zelkova_usersテーブル もきれいに生成できた.後は管理者を登録するだけだ.

    インストールの第一ステップは完了した.ダメだ!エラーが発生してしまった.

    Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPSX\html\core\XCube_Service.class.php:121) in D:\XOOPSX\html\install\wizards\install_nextStep.inc.php on line 11

    このエラーの報告はネット上にもあるが,見たところ効果的な対策は見当たらない.次のリリースを待てのような感じ?しかし,これがファイナルなのだからここで動かすしかない.ログイン画面は出せるようなのでやってみよう.Fatal Errorが出たが,戻りボタンで画面を戻るとXOOPS Cube Site のフラッシュ画面になった.もしかすると動かせるかもしれない.

    image

    ログインしていないつもりだが,アカウント情報→管理者メニューで管理画面に出た.

    image

    原理的にはこの画面に出られればXOOPSでできることはすべてできることになる.「アップデート可能なモジュールが3個あります」という通知が出ている.モジュールは7個インストールされている.モジュールのアップデートは現在も実施されているようだ.legacyというモジュールの最新更新日は2020/3/5 13:59:56となっている.さて,ともかくこの状態で一旦バックアップを取っておこう.phpMyAdmin でまだエラーが出ている.

    mysqli::real_connect(): (HY000/1045): Access denied for user ‘pma’@’localhost’ (using password: NO)

    設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました。

    phpMyAdmin の controluser として pma というデフォルトユーザがconfig.inc.phpで設定されている.このパスワードが空になっているためではないだろうか?⇒そのようだ.パスワードを設定してエラーは消えた.いや,消えていない.以下にこの問題の対処策がある.

    phpMyAdmin ERROR: mysqli_real_connect(): (HY000/1045): Access denied for user ‘pma’@’localhost’ (using password: NO)

    yo need create the user “pma” in mysql or change this lines(user and password for mysql):

    /* User for advanced features */
    $cfg['Servers'][$i]['controluser'] = 'pma'; 
    $cfg['Servers'][$i]['controlpass'] = '';

    pma というユーザを新たに作るか,ないし config.inc.php を修正しろということらしい.

    Add this line to the file xampp\phpMyAdmin\config.inc:

    $cfg['Servers'][$i]['port'] = '3307';

    以下の行も書き換えておいた.

    $cfg[‘Lang’] = ‘ja_utf8’;

    いや,却って悪くなった.この行「$cfg[‘Servers’][$i][‘port’] = ‘3307’;」を入れると接続できなくなってしまう.また,「$cfg[‘Lang’] = ‘ja_utf8’;」行では「サポートされていない言語のコードを無視します。」のようなエラーになる.⇒戻しておこう.’controluser’をrootにするというのは効いたようだ.ともかく,ここまでのところをバックアップしておこう.phpMyAdminでまだエラーが出ている.

    Deprecation Notice in .\libraries\classes\Export.php#592
    implode(): Passing glue string after array is deprecated. Swap the parameters
    Backtrace
    .\libraries\classes\Export.php#592: implode(
    array,
    string ‘|’,
    )
    .\export.php#470: PhpMyAdmin\Export->exportServer(
    array,
    string ‘structure_and_data’,
    ,
    string ‘ ‘,
    string ‘server_export.php’,
    string ‘server’,
    boolean false,
    boolean true,
    boolean false,
    boolean false,
    array,
    string ”,
    )

    deprecation というのは,すでに廃止されたという意味だ.どうもこうなるといよいよPHPの開発環境まで必要になってくるのではないか?ともかくここでは無視しておくしかない.何が起きるかわからないが,ともかく一度テーブルをドロップしてバックアップデータと差し替えてみよう.以下のようなメッセージがMySQLから出ている.

    #1044 – ユーザー ‘root’@’localhost’ の ‘information_schema’ データベースへのアクセスを拒否します

    さて,これで動くかどうか,XOOPS X にもう一度アクセス⇒この画面に戻ってきた.

    image

    これで管理人としてログインできるかどうかが勝負だ.ダメだ!パスワードが通っていない.しかし,別のパスワードでログインできた.修正するカラムを間違えていた.いや,そもそも修正が入っていないような気がする…まぁともかく,以下の画面が出たので進んでみよう.

    image

    ダメだ.Fatal errorになってしまった.

    Fatal error: Uncaught Error: Call to undefined method Legacy_ModuleInstaller::Legacy_ModuleInstaller() in D:\XOOPSX\html\modules\message\admin\class\myInstaller.class.php:16 Stack trace: #0 D:\XOOPSX\html\modules\legacy\admin\class\ModuleInstallUtils.class.php(136): Message_myInstaller->Message_myInstaller() #1 D:\XOOPSX\html\modules\legacy\admin\class\ModuleInstallUtils.class.php(79): Legacy_ModuleInstallUtils::_createInstaller(‘message’, ‘installer’, ‘Legacy_ModuleIn…’) #2 D:\XOOPSX\html\modules\legacy\preload\Primary\SystemModuleInstall.class.php(108): Legacy_ModuleInstallUtils::createInstaller(‘message’) #3 D:\XOOPSX\html\core\XCube_Delegate.class.php(349): Legacy_SystemModuleInstall->callbackSetupUser(Object(Legacy_GenericPrincipal), Object(Legacy_Controller), Object(Legacy_HttpContext)) #4 D:\XOOPSX\html\core\XCube_Controller.class.php(352): XCube_Delegate->call(Object(XCube_Ref), Object(XCube_Ref), Object(XCube_Ref)) #5 D:\XOOPSX\html\modules\legacy\kernel\Legacy_Controller.class.php(579): XCube_Controller->_setu in D:\XOOPSX\html\modules\message\admin\class\myInstaller.class.php on line 16
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; EasyLex_SQLToken has a deprecated constructor in file D:\XOOPSX\html\modules\legacy\lib\EasyLex\EasyLex_SQLScanner.class.php line 22 (1)
    Deprecated [PHP]: Array and string offset access syntax with curly braces is deprecated in file D:\XOOPSX\html\modules\legacy\lib\EasyLex\EasyLex_SQLScanner.class.php line 81 (1)
    Deprecated [PHP]: Function get_magic_quotes_gpc() is deprecated in file D:\XOOPSX\html\class\module.textsanitizer.php line 238 (24)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; LegacyNon_installation_moduleHandler has a deprecated constructor in file D:\XOOPSX\html\modules\legacy\class\non_installation_module.php line 20 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; Message_myInstaller has a deprecated constructor in file D:\XOOPSX\html\modules\message\admin\class\myInstaller.class.php line 12 (1)
    Fatal [PHP]: Uncaught Error: Call to undefined method Legacy_ModuleInstaller::Legacy_ModuleInstaller() in D:\XOOPSX\html\modules\message\admin\class\myInstaller.class.php:16 Stack trace: #0 D:\XOOPSX\html\modules\legacy\admin\class\ModuleInstallUtils.class.php(136): Message_myInstaller->Message_myInstaller() #1 D:\XOOPSX\html\modules\legacy\admin\class\ModuleInstallUtils.class.php(79): Legacy_ModuleInstallUtils::_createInstaller(‘message’, ‘installer’, ‘Legacy_ModuleIn…’) #2 D:\XOOPSX\html\modules\legacy\preload\Primary\SystemModuleInstall.class.php(108): Legacy_ModuleInstallUtils::createInstaller(‘message’) #3 D:\XOOPSX\html\core\XCube_Delegate.class.php(349): Legacy_SystemModuleInstall->callbackSetupUser(Object(Legacy_GenericPrincipal), Object(Legacy_Controller), Object(Legacy_HttpContext)) #4 D:\XOOPSX\html\core\XCube_Controller.class.php(352): XCube_Delegate->call(Object(XCube_Ref), Object(XCube_Ref), Object(XCube_Ref)) #5 D:\XOOPSX\html\modules\legacy\kernel\Legacy_Controller.class.php(579): XCube_Controller->_setu in file D:\XOOPSX\html\modules\message\admin\class\myInstaller.class.php line 16 (1)

    パスワードが通らなかったのは修正箇所を間違えていたからだ.もう一度インポートし直して管理人パスワードは通ったが,「以下のモジュールがインストールされていません」以下の動作は同じだ.「このサイトはただいまメンテナンス中です」が出るのはどこかでフラグが立っているためと思われる.それを外して何とかログインできるようにしなくてはならない.このXOOPS用のデータベースにはテーブルが150個入っている.これらのどこかにそのスイッチがあるはずだ.テーブル名から推定されるモジュールを列挙してみよう.

    1. altsys
    2. archive
    3. avatar
    4. banner
    5. block
    6. bulletin
    7. config
    8. d3forum
    9. download
    10. evennews
    11. groups
    12. image
    13. mailchange
    14. mantis
    15. pico1
    16. pico2
    17. profile
    18. protector
    19. smartfaq
    20. smiles
    21. tellafriend
    22. tpl
    23. users
    24. weblinks
    25. xpress
    26. xupdate

    config というテーブルに debug_mode というのがある.確かにこの値を1→0とすると「このサイトはただいまメンテナンス中です」画面をパスできるが,結局「以下のモジュールが導入されていません」の画面に出てしまう.profile, xupdate, message がインストールされなくてはならないというのだが,エラーの嵐になってしまうので手が出せない.現状のデータベースをバックアップ→ドロップして元の状態に戻してみよう.⇒うまく行った.

    インストールできるモジュールは,①Messageと②Protectorだけで,profile, X-Update はすでにインストール済だ.Message は推奨なのでとりあえず無視できるが,必須モジュールはすでに導入された状態になっている.moduleというテーブルはあるのでそれを加工することで対応は可能かもしれないが,それで済むだろうか?XOOPS Xに入っているのは以下の7つのモジュールだけだ.

    1. legacy
    2. legacyRender
    3. user
    4. profile
    5. stdCache
    6. altsys
    7. xupdate

    どうもこのXOOPS Xというのもそれ自体かなり難物だ.既存モジュールのアップデートを実行しただけでログインできなくなってしまった.

    http://localhost/user.php?xoops_redirect=%2Fuser.php

    いくら何でもこれは酷すぎる.ログインしようとするとuser.phpからuser.phpにリダイレクトしようとするので無限ループしている.ちょっと使い物にならないと思うが,バックアップは一応取ってあるのでもう一度そこまで戻ってやり直してみることにする.⇒パスワードを書き直してログインはできた.前回はアップデート可能なモジュールが3個となっていたのが,1個になった.前回は(アップデート時には)配置・上書きをしないファイルまたはディレクトリ(前方一致)。のチェックをすべて入れてから取得して配置を実行したが,今回はチェックを入れないようにしてみる.XoopsX_CorePackというのをインストールしようとしている.

    legacyのアップデートは完了した.なお,altsysとxupdateの更新が残っている.⇒やはりかなり具合が悪い.画面上部の「アップデート可能なモジュールがあります」をクリックして「このページは動作していません」になってしまう.この「アップデート可能なモジュールがあります」というボタン自体が「おかしい」のだろう.モジュールの管理画面で個別にアップデートすれば問題なく完了する.MessageとProtectorもインストールしておこう.

    バックアップデータをリストアしてデータベースを整合的に補充するというのはかなり難しいのではないかと思う.実際,モジュールのアップデートだけでもシステムが壊れてしまうくらいなのだから,やはり動いている状態を維持しながら少しづつオペレーションするしかない.この意味では XOOPS X をベースにその上に追加的に古いデータを注ぎ込んでゆくしかないのではないかと思う.とりあえず usersテーブルだけを導入してみよう.

    「#1068 – PRIMARY KEY が複数定義されています。」というエラーが出たが一応完了した.admin のパスワードが通らなくなってしまったのでテーブルトップのbabalaboにパスワードを設定して潜入に成功した.

    ユーザーの合計: 683
    承認済ユーザ: 672  |  未承認ユーザ: 11

    すべてのユーザの名前とメールアドレスが見えるようになった.ダメだ.テーブルの3ページ目辺りでエラーが起きて回復できなくなった.⇒またログインできなくなってしまった.再起動して動くようになったが,ユーザ登録テーブルでページ移動するところでエラーになる.

    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; ProtectorFilterAbstract has a deprecated constructor in file D:\XOOPSX\xoops_trust_path\modules\protector\class\ProtectorFilter.php line 4 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; ProtectorFilterHandler has a deprecated constructor in file D:\XOOPSX\xoops_trust_path\modules\protector\class\ProtectorFilter.php line 35 (1)

    うまくジャンプできる場合もある.最後の35ページ目は開けた.protectorを一時的に止めることはできるだろうか?⇒モジュールを廃棄するという手段がないのでフォルダのリネームなどの強引な手段で止めた.これで一応動作するようになった.protectorはインストールしたばかりの最新版のはずなのにどうしようもない…管理画面の左上にある「導入・アップデート管理」ボタンを押しただけで,やはり下記の状態になる.

    image

    一応ある程度までは無害動作するようになったが,さて,このあとどう展開すればよいか?それが問題だ.

    XOOPSはすでに終わってしまっているのだろうか?

    常用のエディタを NoEditor から Mery に変えてみた.NoEditor の弱点として,①読み込んだファイルを必ずSJisに変換している,②40MB以上の巨大ファイルを読み込めない,がある.Meryの他に TeraPad というのも試してみた.ほぼ同等と思われるが,しばらく Mery を使ってみることにする.Mary ではなく Mery だというところが不審なところだが…Maryではあまりに一般的で検索に引っかからないためあえてそう名付けたのかもしれない…

    MySQLでは内部コードとしてUTF-8を使っている.現在ネットではほとんどUTF-8になっているのではないかと推定されるが,日本語アプリでは依然としてSJisが使われている.UTF-8にはSJisに変換できない文字があるので誤動作の原因になる可能性がある.以前はEUCもよく使われていたような気もするのだが…確か古い版のMySQLではEUCが標準だったような気がする.ともかくこれでコードの問題は解決したし,読みそこなっていた巨大SQLファイルも編集できるようになった.さて,昨日の続きだ.

    かつては全盛を極めたXOOPSだがどうも現在は落ち目のようで,特に XOOPS Cube の開発はすでにほとんど停止してしまっているように思われる.XOOPS で構築したユーザ会サイトを完全に放棄するのならそれまでだが,ここにはいくつか重要な資源(資産)が含まれている.①1000人を超えるユーザ会登録会員名簿,②ゼルコバの木ベータのほぼ完全なヘルプドキュメント,③WordPressで書いた膨大な作業ログ(屋根裏部屋).

    現在復旧しようとしているサイトイメージのバックアップは登録会員数が683人となっているので比較的初期のものと思われる.また,WordPressはインストールされていないので屋根裏部屋も使っていない時期のものだ.従ってヘルプの内容もまだかなり限定されたものだった可能性がある.SQLのバックアップには100MB超のものもあるのでもしこれらが動かせるようになったらほぼ旧状を復旧させることができる可能性もある…

    XOOPSはすでに終わってしまっていると考えられるので今後のサイト運営はWordPressベースで行うしかないだろう.WordPressの利点は特に何もしなくてもケータイ向けのページを出力してくれるという点だ.馬場研究所のホームページである「冷たい森」などはこのまま凍結するしかないが,XOOPSが復旧できないとそれだけでユーザ会は事実上解散ということになる.ユーザ会会員名簿は探せばどこかにある可能性もあり,ユーザ会の活動自体は全体に低調だったことから考えれば会員名簿さえ復元できればそれで十分と言えないこともない.

    Meryで現在確認されている最大サイズのSQLを開いてみたところ登録会員数は763人だった.このSQLが保存されたのは2012年3月12日 19:23でまだ,早期と言ってもよい時期だが,コアな会員はほぼこの中に含まれていると考えてもよいのではないだろうか?このあと,猛烈なユーザ登録スパムの嵐が襲って会員数が急膨張した時期がある.このようなスパム会員は可能な限り手作業で排除した記憶があるが,まだそのようなファイルは見つかっていない.

    ともかく現在の問題は「zelkova_users」というテーブルを生成できないという点だ.テーブルをインポートすることは現状でも可能だが,このテーブルに管理者を登録することができない.管理者としてログインすることができるようになれば,あとはXOOPSの管理画面から大概のことはできるようになるのだが…

    このテーブルにはログインパスワードが登録されている.MyAdminでは任意のテーブルの任意のレコードの任意のフィールドを変更・修正することが可能だが,パスワードは暗号化して保存されているため,原理的に書き換えることができない.従ってともかく何らかの方法で新しい管理者を一人登録しないことには何も始まらないということになる.どうすればよいか?インポートでテーブルを読み込むことは可能だが, zelkova_users テーブルを生成することができるようにならないと問題は解決しないのではないかという気がする.

    もう一度ユーザテーブルをドロップしてその辺りの動作を見てみることにしよう.いや,その前に現状ではphpMyAdminの操作でエラーが起きている.

    image

    どこか壊してしまったようだ.操作→修復 で修復できた.もう一度XOOPSのインストールからやり直してみる.mainfile.php を初期化してからブラウザでXOOPSにアクセスするとインストールウィザードが開始するようになっている.データベースの作成までは問題なく進行する.30個のテーブルが生成されるが,31個目の「データベースzelkova_usersの作成に失敗しました。」で終わる.この問題に関しては昨日記したようにネット上にもいくつかの情報があり,解決策も提示されているのだがいずれにも該当しないという状態になっている.

  • \html\install\sql\mysql.structure.sqlでvarchar(256)→varchar(255)に修正⇒対応済
  • install/sql/mysql.structure.sqlでTYPE=MyISAM⇒ENGINE=MyISAMに変更⇒対応済
  •  

    html/install/password.phpというファイルがあるのでインストール人名とパスワードを設定すると,localhost/installでログイン画面が開きIDとパスワードを入力するようになるが,その後の動作には変化はない.結局ユーザテーブルの生成に失敗している.既存バックアップSQLをインポートした後で管理者登録だけを実行しようとすると,以下のような結果となる.

    image

    データのインサートに成功するテーブルと失敗するテーブルに分かれている.この中でも特にzelkova_usersにインサートできないため,管理人としてログインできない.この問題を解決できないと結局(仮に閲覧できるようになったとしても)それ以上何もできないということになってしまう.この原因は結局XOOPSとXAMPPでPHPのバージョンが合っていないためと考えられるのだが,どう対処したらよいのだろう?ローカルで動作させるだけならPHPのバージョンを落とすという選択肢はあり得るとは思われるが,そうすると外部には持ち出せないということになってしまうのでほとんど意味がない.XOOPSはこの辺りでごたごたしていたために結局廃れてしまったのだろうか?とりあえず,xamppを古いバージョンに戻してみよう.

    なぜだろう?末尾で改行するとリストになってしまう.かなり使いづらい.⇒上の方で段落番号ではなく●を使ってからだ.段落番号に変えたら動作が止まった.

    xammpにはインストールという手順が必要だ.最初にアンインストールしておかないとまずいのではないだろうか?いや,その前にフォルダを削除してしまった.setup_xampp.bat はエラー終了してしまったが,xampp_control.exeから起動することはできる.Apache も MySQL も走っている.⇒いや,xamppのパネルから見るとMySQLは走っていない.phpのフォルダ名がリネームしたままになっていた.phpMyAdminで文字化けが発生し,エラーになる.⇒xamppの新しい版に入っていたphpMyAdminと差し替えて動作するようになった.この版のphpMyAdminはもっとも安定している.いや,よく見ると古いレイアウトの画面になっている.どういうことだろう?

    このphpMyAdminでは25MBのSQLファイルがインポートできない.⇒version 2.7.0以上ならこのようなことは起きないという.このphpMyAdminのバージョンは1.20.3だからクリアできているはずだが…upload_max_filesize, memory_limit and post_max_size をチェックする必要がある.これはapacheの設定のはずだ.⇒いや,httpd.confにはない.php.iniのようだ.3つのパラメータすべてを200Mに変えてみたがアップロードできない.XOOPSをlocalhostで開けない.MyAdminで見るとデータベースはdc2b69という接頭辞でつくられているが,ユーザは未登録だ.XOOPSのデータベースユーザはroot,パスワードなしという設定なのでアクセスできてもよいはずなのだが…

    差し替え版が間違っていた可能性があるのでXOOPS NEWからコピーし直したが動作しない.phpMyAdmin/config.inc.phpは修正した.どうも何かやりそこなってしまったようだ.以下のようなエラーが起きている.かなり考えづらい状況だ.

    Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or ‘(‘ in D:\XOOPS\phpMyAdmin\index.php on line 10

    これはこの行のどこかに不可視の不正文字が入っていることを意味している.Meryは半角/全角スペースを可視化できるのである程度このような問題に対処できるが,少なくとも不正文字は入っていないように見える.しかも同じ行を手打ちしても同じことが起きるので意味が分からない.NoEditorで読み込んでもSjisに変換できない文字の存在は検出されなかった.別のところにある同名ファイルと差し替えたところ,そのエラーは消えたが今度はまた別のファイルでエラーが発生した.

    Parse error: syntax error, unexpected ‘[‘ in D:\XOOPS\phpMyAdmin\libraries\config.default.php on line 125

    このファイルも差し替えてログイン画面が出たが,phpMyAdminの内部で同種のエラーが頻発している.やはり古いxamppに入っているphpMyAdminでないと動作しないように思われる.ネットで以下のような回答を見つけた.これが当たっているような気もする.

    https://stackoverflow.com/questions/13960277/error-parse-error-syntax-error-unexpected-t-string-expecting-t-constant-encap

    Make sure they are running PHP 5.3 or later. If they are running an earlier version they won’t have support for namespaces.

    So you don’t see any syntax errors? than it must be php version.

    この版ではphpMyAdminは正常に動作しているが,上記したように25MBのファイルを読み込むことができない.このxamppは32ビット版なので動作に制限があるのではないだろうか?大きいファイルを分割してロードするようなツール(たとえばBigDump)もあるようだが…コマンドラインで操作するのは煩わしい…デフォルトが16MBなので半分に分割すれば通るかもしれない.いや,その前にXOOPSにログインできるようにしてみよう.

    XOOPS/mainfile.phpでMySQL内に実在するデータベース名を設定してログイン画面を開くことができた.ただし,このXOOPSでは管理人さえ登録されていないので中に入ることができない.新しいXOOPSにはインストールウィザードというのがあるが,古いXOOPSにはそれらしきものがない.ともかく管理人付きのXOOPSを一つ立ち上げないことにはどうにもならない.ネットで探してみるしかないのではないだろうか?XOOPS Cube サイトには2006年以降のバージョンのストックがある.ホダ塾ディストリビューションというのを使っていたような気もするが,一番古いので2008年8月9日だ.Version 1.0.2 とあるのでホダ塾版というのが出て間がない時期のものと思われる.

    最新版のディストリビューション正式版で2018年2月8日というのがある.これを試してみるべきではないだろうか?XOOPS X と呼んでいるものだ.新しいXOOPSで起きていたのはどういう問題だったっけ?⇒最大の問題はユーザテーブルが作れないという問題だが,PHP周りのエラーがごたごた起きていたような気がする.2018年の最新リリースを完全にクリーンインストールしてやれば,少なくともこれらの問題は解決しているのではないか?それをまず,試みることにしよう.legacy-corepack_20180208 というパッケージだ.ともかくこれを黙ってインストールしてみよう.ただし,この場合はxamppの新しいバージョンを使う必要がある.現在使っているxamppはxampp NOWとリネームしておこう.

    setup_xampp.bat でエラーが出ている.

    image

    警告なので無視できるかもしれないが,調べておこう.PHPの構文は知らないのでどうなっているのかよく分からないが,$scount,$bcount,$dbcount は Countable という属性を持たなくてはならないということなのだろう.まぁ,よいことにしておこう.Apache は問題なく走ったが,MySQLはエラーを出して落ちてしまった.

    データベースzelkova_usersの作成に失敗しました。

    ある程度動くようになってきたが,管理者パスワードを忘れてしまったのでXOOPSにログインすることができない.多分XOOPSを再インストールしてやればこの状態からは脱出できると思われるが,その前にサイトの配置を少し変更しておくことにしよう.localhostでアクセスするパスをD:\Webとし,この直下にXOOPS2.2/htmlの中身を置くという構成にしてみる.いや,それよりXOOPS2.2/htmlをapacheのドキュメントルートにするという方が早い.⇒http://localhostでXOOPSが起動されるようになったが,ただいまメンテナンス中の画面から中に入れない.「XOOPS Cube Legacy のインストール方法」の説明ではこの設定でlocalhostにアクセスすると自動的にインストールウィザードが開くとなっているのだが…adminのパスワードを強制的に空にしてみよう.⇒ダメだ.もう一度インストールし直すしかなさそうだ.インストールウィザードを開けた.

    image

    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86

    image

    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86

    image

    Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86

    image

    データベースは存在していてもよいようだが,テーブルが存在するとこの画面から前に進めないようだ.データベースを丸ごとドロップした.

    image

    ユーザテーブルの作成に失敗している.この後管理者の登録を実施するので登録ゼロで失敗とも考えられるが,説明文では✗にはなっていない.管理者ユーザを登録したがレコードの挿入に失敗している.もう一度作り直してみよう.ユーザテーブルは保存しておいたが,エラーになっている.

    <b>Fatal error</b>:  Uncaught TypeError: mb_detect_encoding() expects parameter 1 to be string, bool given in C:\xampp\phpMyAdmin\libraries\classes\Util.php:1620
    Stack trace:
    #0 C:\xampp\phpMyAdmin\libraries\classes\Util.php(1620): mb_detect_encoding(false, ‘UTF-8’, true)
    #1 C:\xampp\phpMyAdmin\libraries\classes\Plugins\Export\ExportSql.php(725): PhpMyAdmin\Util::localisedDate()
    #2 C:\xampp\phpMyAdmin\export.php(444): PhpMyAdmin\Plugins\Export\ExportSql-&gt;exportHeader()
    #3 {main}
      thrown in <b>C:\xampp\phpMyAdmin\libraries\classes\Util.php</b> on line <b>1620</b><br />

    ダメだ.本体のエクスポートでも失敗している.これはかなりまずいことになった.エクスポートが使えなかったら何の役にも立たない.問題は

    Uncaught TypeError: mb_detect_encoding() expects parameter 1 to be string, bool given in C:\xampp\phpMyAdmin\libraries\classes\Util.php:1620

    というところだ.ネットで検索すると

    phpMyAdmin5.0.1の「状態」タブがFatal Errorで表示されないバグ
    https://crieit.net/posts/phpMyAdmin5-0-1-Fatal-Error

    という情報があり,似たような状況で暫定対処策を提案していたのでそれに従って,「とりあえず日本語ユーザーができる仮対応としては、

    C:\xampp\phpMyAdmin\libraries\classes\Util.phpの1617行目を

    $ret = strftime(‘%Y-%B-%d %H:%M’, (int) $timestamp);

    に書き換えることで閲覧できるようになる――のような修正を行った.これでエクスポートは問題なくできるようになった.もしかするとこれで問題解決している可能性もあるので,もう一度データベースを組み直してみよう.ダメだ.やはりユーザテーブルは作られていない.

    「サイト管理者についての設定」画面のところで「実行」する前にオリジナルのSQLをインポートしてみよう.ダメだ.読み込めない.「#1007 – データベース ‘oa00090878_babalabo’ を作成できません。データベースはすでに存在します。」で無動作になってしまっている.テーブルだけを書き換えるようにすればよいのだが,このファイルは大き過ぎてNoEditorで編集することができない.どうすればよいか?一度データベースをドロップしてみよう.⇒オリジナルをインポートしてユーザテーブルからadminを落とした上で管理者登録を実行してみる.⇒どうやら失敗したようだ.

    image

    この操作はかなり無理があるとは思われるが…一番の問題はインストールウィザードでユーザテーブルが作れないという点ではないだろうか?もう一度やり直してみよう.

    NG データベースzelkova_usersの作成に失敗しました。

    どのようなエラーが起きているのかは何も情報がないので分からない.管理者登録を実行すると,下記のエラーが出る.

    NG 1個のデータをデータベースzelkova_usersにインサートすることに失敗しました。

    それ以外にはエラーは発生していない.エラーを無視して進むと

    Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS2\html\core\XCube_Service.class.php:121) in D:\XOOPS2\html\install\wizards\install_nextStep.inc.php on line 11

    の警告を出して行き止まりになる.legacy-r2_2_02というのをダウンロードしてみた.これは XOOPS Cube のコアと思われる.動作は同じかもしれないが…これは本家版で英語しかサポートしていない.Confirm database settings 画面から次に遷移するところで以下のようなエラーになった.

    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in D:\XOOPS2\html\class\database\mysqldatabase.php:86 Stack trace: #0 D:\XOOPS2\html\install\class\dbmanager.php(51): XoopsMySQLDatabase->connect(false) #1 D:\XOOPS2\html\install\class\dbmanager.php(62): db_manager->connectDB(false) #2 D:\XOOPS2\html\install\wizards\install_checkDB.inc.php(14): db_manager->isConnectable() #3 D:\XOOPS2\html\install\index.php(100): include(‘D:\\XOOPS2\\html\\…’) #4 {main} thrown in D:\XOOPS2\html\class\database\mysqldatabase.php on line 86

    このエラーはバージョンの問題と考えられるが,以下のような情報があった.

    PHP7で、mysql_connect()が無いと怒られる件 (undefined function mysql_connect)
    https://qiita.com/okamoto0/items/a2568133064b74f837bb

    解決策としては,①mysql_系関数を mysqli_系関数に書き換える:mysql_connectをmysqli_connectに変える.②古いモジュールを使用する(php-mysqlを入れる等)としている.これは結局現在使っているxamppがまだ少し古いということを意味しているように思われる.いや,その逆かもしれない.mysql_connectを呼び出しているのはXOOPSの方だから,XOOPSの方が古いということになる.確かにそのようだ.どうすればよいか?

    この記事ではPHP7でこのような事象が起きるとしているので古いxamppを使えば解決しそうに思われるが,問題はロリポでどのバージョンを使っているのか?という点だ.ロリポで使えるのは3種あるが,PHP7.1(CGI版),PHP7.3(CGI版),PHP7.3(モジュール版)でいずれも7以上だ.つまり,仮にローカルで動かせるようになったとしてもリモートには持ち出せないということになってしまう.そうなると,XOOPSのもっと新しい版があるのか否か?という話になってくる.

    mysqli_connect という関数は現在の環境でも存在するようなので,まずソースを修正してみることにしよう.mysql_connectという関数の出現は1,2箇所と見られるがそれだけでは済まない.おそらく,mysql_xxxという関数セットをすべてmysqli_xxxに書き換える必要があるように思われる.30箇所くらいあるが,ほとんどはmysqldatabase.phpの中だ.それ以外ではmysql_real_escape_stringという関数が複数箇所で使われているがとりあえず無視しておこう.mysqldatabase.phpで17箇所置換した.⇒未定義関数エラーは発生しなくなったが,データベースに接続できない.

    この版ではPHPは5.x以上,MySQLは4.4以上となっている.インストールされているxamppのPHPは7.4.2,phpMyAdminのバージョンは5.0.1だ.データベースを先に作れということなのだろうか?いや,残っていた.ドロップしてみよう.いや,同じだ.ユーザをrootに変えてみたが変化なし.日本語版ではこの問題は出ていないのだが…

    image

    このエラーでハマっている人も結構いるようだが,「設定の問題ではないか?」という回答しかない.エラーは出ていないが,どこかでまだmysql_connectを使っているところがあるのだろうか?どうも埒が明かないのでこの線はあきらめることにしよう.XOOPSのもっと新しい版があるかどうか探してみる.XOOPS Cubeに関するWikiの記事は2012年頃で更新が止まっている.ネットには2015年に「XOOPS CUBEの開発がついにクローズに – TSUKURU STYLE」という記事が出ている.「XOOPSの敗因は?今後繁栄するCMSは?良回答に300PT進呈します。 Ya… – 人力 …」などという記事もある.2011年頃ですでに「WordPress と Joomla! と Drupal が現在の3強」と言われていたようだ.

    フォーラムなどはpicoで書いていたと思われるが,屋根裏部屋はWordPressを使っていたのではないだろうか?ただし,今のところバックアップの中にはそのような時期のものは見当たらない.つまり,かなり初期のものしか使えない状態になっている.もう一度新しいバージョンに戻って動くところまでやってみることにする.

    インストール時のDBテーブル作成ERRORについて
    https://xoopscube.jp/forum/6499

    このページには以下のような解決法が載っている.

    \html\install\sql\mysql.structure.sql
    上記ファイルの70行目と536行目を以下の様に変更して、とりあえず、この問題は解決しました。
    ×email varchar(256) NOT NULL default ”,
    ○email varchar(255) NOT NULL default ”,

    いや,手元のバージョンではその通りになっている.とりあえず,mysql_→mysqli_の置換修正を先に入れておこう.関わりのあるソースは

  • class/database/mysqldatabase.php 20箇所
  • class/logger.php
  • install/language/ja_utf8/charset_mysql.php
  •  

    の3本だが,2番目は定数,3番目は正しい論理になっているので,mysqldatabase.phpの修正だけで済んだ.テーブルが生成されないという問題でもう一つの解決法が見つかった.

    XOOPS Cubeのインストール時にテーブル作成エラー
    https://itoben.com/blog/6.html

    この記事では原因を「MySQLバージョン5に対応していないことによる」としている.

    下記ファイルを修正することで問題が解消します。
    install/sql/mysql.structure.sql

    「TYPE=MyISAM」という記述を,すべて「ENGINE=MyISAM」に変更する。

    しかし,この修正もすでに入っている.もう一つの修正「C:\xampp\phpMyAdmin\libraries\classes\Util.phpの1617行目を $ret = strftime(‘%Y-%B-%d %H:%M’, (int) $timestamp); のように変更する」も入れておこう.このファイルを開くと以下のエラーが出る.

    image

    NoEditorは文字コードをSJisに変換しようとするのでUTF8が崩れる可能性がある.何か別のエディタを見つける必要がある.

    XOOPSの初期画面が出るところまでは進んだがログインできない

    TentVil というフォルダを廃止してWordPressをドキュメントルート直下に置いたら,動作が変化した.メニュー4項目のうち,最初の「ゼルコバの木2020」を除いてすべて正しく動作するようになった.このメニュー項目のリンク先がどこに格納されているかを突き止めれば動作するようになるだろう.

    テーブル:posts の最初の投稿「さあ,もう一度ゼロから始めよう」の中にある

    background-image: none;” alt=”1x” src=”https://zelkova-tree.net/WordPress/wp-content/uploads/2018/12/1x_thumb-1.jpg” border=”0″>

    という行はおそらく効いていないと思われる,が改めてみよう.特に効果はなかった.データベース全体を検索する機能があったので「zelkova-tree」で検索してみたところ

  • cpd_counter 3630件
  • options 3件
  • postmeta 1件
  • posts 2685件
  •  

    がヒットした.どうもこのpostmetaというのがそれらしい._menu_item_url というキーが付いているのだから間違いないだろう.うまく行ったようだ.zelkova-treeが生で入っている箇所はこれ以外にも6千箇所以上あるが,動作的には多分問題ないのではないかと思う.これで一応現在のユーザ会サイトであるテント村のページと同期を取ることができた.冷たい森サイトも少し手を入れておこう.冷たい森サイトの表紙画面以外はすべて相対アドレスでリンクしているので頭から http://localhost/Ayanet/babaken/bindex.html にジャンプすればほぼ問題なく見えるようだ.カバーページから英語版と日本語版に分岐するようになっているが,このページはもう廃棄してよいだろう.

  • image image

    上の右図には「冷たい森」というタイトルは出てこないが,馬場研究所という名前は出ているのでこれでよいのではないか?さて,いよいよユーザ会サイトの復元だ.ともかく最新のバックアップを見つけなくてはならない.ユーザ会が発足したのは2007年11月だがクラブハウスがオープンしたのは2010年5月5日だ.2011年8月にadodb-sessions.oracle.clob.sql など adodb-sessions.という接頭辞の付いたファイルが残っているがこれはなんだろう?いや,サイズも小さいので何かを試験的にやっていたものだろう.

    2010/11/18にmysql31.chicappa.jp.sql という名前で25.0MBというのが残っている.更新日時と名前が同じファイルが5本ある.そのうちの最新のものは「YOMOGI 2012-01-24 ATTACK後」というフォルダに入っている.その一つ前のファイルはYOMOGI 2011-11-27だ.Eドライブには更新日時2012/03/12で30.9MBというのがある.これは自家サーバというフォルダにはいっていたものだ.同じ日付でmysql31.chicappa.jp.sql 97.1MBというのもあった.mantisのバックアップもある.2013/01/20で3.42MB.⇒30.9MBというファイルが見当たらなくなってしまった.その代わり同サイズのファイルでLAA1011209-oo3470.sqlというのがある.これは昨日取ったばかりのWordPressのデータだ.読み間違いだろうか?2013/01/31にlocalhost.sql という名前で110MBというのがある.

    localhost.sql はインポートできなかった.Incorrect format parameter というエラーが出ている.mysql31.chicappa.jp.sql も同じだ.ファイルが壊れているのだろうか?エディタでも読み込むことができない.2016年にネットが止まるまでは定期的にバックアップを取っていたはずなのだが,その時期のものがまったくないというのはどういうことだろう?すでに廃棄してしまったPCにまとめて入っていたのだろうか?ZIPとして取り出していたのではないか?WinSCPでコマンド操作していたような気がする.いや,そうでもなさそうだ.

    いや,そもそもインポートできるファイルが最大40MiBだ.コマンドを使って転送できるだろうか?LAA1011209-oo3470.sql 31MBはインポートに成功しているが,NoEditor では読み込むことができない.バイナリが入っているというのだが…いや,いつの間にか読み込んだデータベースが生成されている.いつできたのだろう?この中のテーブルは概ね正しいように思われる.testにもpmaを接頭辞とするテーブルがいくつも作られている…自家サーバに入っているmysql31.chicappa.jp.sql 25.0MB で生成されたようだ.testに入っているテーブルはphpmyadminのデータベースの中身と構造がまったく同じだ.

    いや,自家サーバー/XOOPSに入っているのは99,468KBだから違う.このファイルはインポートできない.Incorrect format parameter になる.それではどこから持ってきたのか?G:\外付けHD全バックアップ 2013-01-30\G.KEIKO\YOMOGI 2011-11-27にあったものだろう.YOMOGI 2012-01-24 ATTACK後に入っているのも25,656KBで大きさはまったく同じだ.2014年~2018年のログはタイトルの冒頭に日付が入っているので,おそらく公開していないのではないかと思われる.とすれば,おそらく遅くとも2014年にはサイトの更新はまったく止まった状態になっていたのではないかと思われる.いや,2015/06/28までは投稿していた形跡がある.この時期までのSQLがあればよいのだが…

    いや,違う.タイトルに日付が入っていない原稿は確かに投稿されていないものと思われるが,ゼルコバの木以外の作業をやっていたためではないか?しかし,系図関係のログでもタイムスタンプ入というのはある.2015/09/28に「ネットが止まってしまった」という記事があるが,2015/10/29には「ネットが復活した」ともある.「屋根裏部屋」はある程度ローカルにバックアップがあるので復元しようと思えば可能だ.YOMOGI 2011-11-27とYOMOGI 2012-01-24 ATTACK後はサイズがまったく同じなので前者をインポートすることにする.しかし,これは更新日付が2010/11/18なのであまり新しくない.これを読み込むと以下のエラーになるが,テーブルは(おそらく)すべてインポートされている.

    登録ユーザ数は683人だ.もっと大きなファイルもあるが,phpMyAdminで読み込み可能なファイルサイズが40MBしかないのだから仕方ないだろう.この上はいきなり97MBになってしまう.登録ユーザデータはCSV形式でもダウンロードしているはずなのだがどこかにあるだろうか?ただし,CSVで取り出しているのは比較的初期の頃と思われるので存在していたとしてもあまり役に立たない可能性もある.古い話をすると2006年頃はBloggerを使ってログを付けていた.97MBのSQLファイルをWordPadで読ませてみたが,72%完了で止まってしまった.応答なしになっているのでこれ以上は無理だろう.ファイルをエディタで読み込むことができれば,テーブルに分割してサイズを小さくできる可能性もあるのだが…

    ともかくこの状態でブラウザで閲覧できるようにしなくてはならないのだが,そのためにはXOOPSを使う必要がある.XOOPS2.2は単純にインストールしてあるというだけなのでここから調整するのはかなり厄介だ.いや,驚くべきことにWordPadでファイルを開くことができた.ただし,残念ながら完全に文字化けしている.NoEditorはもっと強力と思ったのだが…しかし,探せば世の中にはこのくらいのファイルを読めるエディタが存在する可能性はあるので,ここは一時保留ということで先に進むことにする.

    http://localhost/XOOPS2.2/html/ では一応ログイン画面は開くが管理者も決まっていないのでログインはできない.

    image

    http://localhost/XOOPS/ では以下のエラーになる.

    Parse error: syntax error, unexpected ‘new’ (T_NEW) in D:\XOOPS\core\XCube_Root.class.php on line 496

    これは前にも出ていたエラーだ.しかし,XOOPSは一度は動くようになっていたはずなのだが…そもそもこのXOOPSはどこから持ってきたものだったのか?⇒xampp-win32-.1.6.3a で2007 SUMMERのXOOPSを使っている.mainfile.phpでユーザIDとパスワードをデフォルト設定してXOOPSの初期画面が出たとしている.この後,picoモジュールをコピーしてエラーはすべて消えたとなっている.それからxamppの最新版 xampp-windows-x64-7.4.2-0-VC15-installerを導入.ここで上記のエラーが起きたためXOOPSの最新版 legacy-stableに切り替える.ということはやはりXOOPS2.2を使わないとダメということではないだろうか?http://localhost/XOOPS2.2/ を開くと以下の画面になる.

    image

    ここでhtml/のフォルダをクリックするとログイン画面に移る.XOOPS2.2/mainfile.phpを修正してようやく動き始めた.以下の画面が出せるようになった.

    image

    残念ながら guest:zelkova ではログインできなかった.データベースにはguestという名前では登録がない.「ログイン情報が間違っています」のエラーになる.管理者権限を持つIDは4つあるが,パスワードが分からない.データベース中ではパスワードは暗号化されているので書き換えもできない.管理画面に入れればいろいろなことができるようになるのだが…どうしたらよいだろう?しかし,この画面イメージはサイトを立ち上げたごく初期に出していたものだ.データベースの内容はすでにユーザ登録が683あるのですでにある程度活動していた時期のものと思われるのだが…一つだけ使えるIDがあったが,「以下のモジュールが導入されていません」で止まってしまう.

    image

    これらのモジュールはmodulesフォルダには入っているのだが,インストールボタンでエラーが発生し,元の画面に戻ってしまう.おかしい.パスワードが通らなくなってしまった.エラーメッセージすら出なくなってしまった.万事窮す...まず最初に「インストール」という操作をやる必要があるのではないだろうか?インストール作業時にサイト管理者名,パスワードなどの設定ができるようになっている.しかし,インストールするとデータベースが初期化されてしまうのではないだろうか?いずれにしても,それしか方法はないような気がする.

  • データベースに接続できた

    多少進展があった.以下のようなことが分かった.

    1. ロリポップ!のユーザ専用ページ→サーバーの管理・設定→データベース→操作する→phpMyAdminを開くという機能があった
    2. XAMPPは元々小規模なシステムのローカルサーバーとして使われることを想定しているため,MySQLのrootユーザのパスワードなしが既定になっている.旧バージョンでは「セキュリテイ」というオプションでパスワードの設定・変更ができるようになっているが,現在のバージョンではコマンドプロンプトで直接アクセスする方法しかない
    3. ロリポップ!では有償(300円/月)でバックアップサービスを提供している.これにはデータベースのバックアップ,ダウンロードとリストアが含まれるが加入していなかった

    ということのようだ.ともかくこれでWordPressのデータをサイトから取り出せるようになる.まず,MySQLのルートユーザのパスワードを設定しておこう.

    image

    これでrootのパスワードは設定できたが,XAMPPのコントロールパネル→MySQL→AdminでphpMyAdminが開けなくなってしまった.Config で my.ini を開いてみるとパスワードは未設定なのでここを直さなくてはならないのではないだろうか?MySQL/config.inc.phpも更新されていないので修正する必要があると思う.特に

    [‘auth_type’] = ‘cookie’

    としないとログインパネルが出ないという構造になっている.⇒ようやくまともに動作するようになってきた.phpMyAdminのHOMEボタンの右のアイコンから「ログアウト」できるようになった.上でエクスポートしたファイルを取り込んでみよう.⇒インポートするためには先にデータベースが生成されていなくてはならないようだ.これをまず作っておく必要がある.今のインポートでデータベース名を覚えていたようだ.インポートは正常に終了したのでアクセスしてみよう.まずappacheのドキュメントルートを切り替える必要がある.⇒ジャンプできるようになったがデータベースにアクセスできていない.wp-config.phpでMySQLのホスト名を設定する必要があるだろう.一応データベースには接続できたようだ.

    image

    それらしきものが表示されているが,ほとんど壊れている.試みにネットに接続して localhost/tentvil/wordpressを開いてみると下図のようになった.

    image

    これは結局WordPressでページを初期化する段階でWordPressのサイトにアクセスしていることを意味する.そのとき得られた情報はクッキーか何かに保存されているようで,ネットから遮断しても上の画面は出てくるが,クッキーを削除してしまうとその上の壊れた画面に戻ってしまう.

    テント村サイトからダウンロードしたファイルの中には zelkova-tree.net という文字列は見当たらない.情報を暗号化していることも考えられるが見た限りはそのようなことを行っているようにも見えない.ログイン画面が開ければ何とかなりそうな気もするが,それもかなり難しそうだ.データベースにはいくつかzelkova-tree.netという文字列が入っているところがあるのでその部分だけでも修正してみよう._options というファイルに siteurl と home という項目があり,ここに https://zelkova-tree.net/WordPress という値が入っている.これを http://localhost/tentvil/WordPress に変えてみる.

    !出た!完璧だ.

    image

    見た限りでは何も欠けているものはないように思われる.この Live Writer から投稿できるかどうか試してみることにしよう.いや,おそらくダメではないかと思う.仮に可能であるとしてもおそらくネットにアクセスできる状態になっていないと通らないのではないかと思う.とりあえず,やってみることにしよう.「ブログのオプション」を書き換えるだけだ.

    image

    いや,この画面では編集できない.「アカウント情報の更新」ボタンが下記パネルが出る.

    image

    なぜだろう?ネットに接続していないのに登録が完了した.

    image

    いや,そもそもまだすべてのページが表示されるような状態にはなっていない.確かにトップページだけは頭の先から尻尾まできれいに表示できているが,メニューからはどこにもジャンプできない状態になっている.これらのリンクはすべて http://zelkova-tree.net/WordPress/ を経由するものだ.現在使っている WordPress はテント村サイトからダウンロードしたものだが,WordPress 自体はローカルでも走るので未使用のWordPress をダウンロードしてインストールしてやれば動作するのではないだろうか?データベースに関してはほぼ問題なくコピーできているように思われるのであれこれ試すよりも手っ取り早いような気がする.

    ネットに接続してブログアカウントを元に戻した.今度はリモート投稿のためのURLの入力を求められた.ローカルとリモートを区別しているのかもしれない.いつの間にそうなったのか分からないが,Windows Live Writer のレイアウトが変わって左右の余白がなくなり,代わりに段落でリストを指定できるようになった.

     

    Windows Live Writer の動作がおかしい,段落スタイルでリストにならない

    2月23日で作業が止まっている.環境が整うまで待っていたら大穴が空いてしまうのでともかく始めることにしよう.どこで止まっているか,というよりどこまでできたかを整理しておこう.おかしい.段落のスタイルでリストにならない.プレビューで見ればリストになっているのだが…TAMOZのOpen Live Writer はまともな動作になっている.変換文字列がスクリーン中央に表示されるというのもうれしくない.ただし,これはグーグル日本語変換の場合でMS IMEならそのようなことは起きない.

    いや,これは元からそういう動作だったのかもしれない.プレビューでも段落番号は欄外に表示されているが,おそらく編集画面では欄外を表示しないという仕様になっているのだろう.Open Live Writer にはこのような「欄外」という領域は存在しない.以前の動作はよく覚えていないが,我慢して使っていたのだろうか?かなり使い勝手が悪かったのではないかと思うのだが…多分,BHでは Windows Live Writer ではなく,Open Live Writer を使っていたのだろう.

    1.XAMPP をインストール
    2.xammp\apache\httpd.conf で DocumentRoot を設定 (時価サーバー\XOOPS)
    3.Xoops\mainfile.php を編集してXOOPS_ROOT_PATH,XOOPS_TRUST_PATH,XOOPS_URL を設定する
    4.Parse error: syntax error, unexpected ‘new’ (T_NEW) in C:\zelkova-tree.net\web\core\XCube_Root.class.php on line 538 が起きる
    5.xampp-win32-1.6.3a.zip をインストール
    6.XAMPP の初期画面が表示されるようになる (2007年 SUMMER のXOOPS)
    7.Fatal error: Unable to connect to database in D:\XOOPS\class\database\databasefactory.php on line 34 というエラーになる
    8.WinMySQLadmin のパネルは開ける
    9.「Driver 3.51 Not Found」というエラーは無視
    10.xampp\mysql\my.ini でbasedir=”C:/MySQL5.0/”を切っている
    11.mysql\bin\my.cnf の[mysqld] でbasedir, tmpdir, datadir を設定している
    12.YK氏よりOSをクリーンインストール後,再インストールエラーのクレーム
    13.xammp をCドライブに移動して,Dドライブをサイトイメージ専用にする
    14.phpMyAdmin でエラーが出る:Your configuration file contains settings (root with no password) that correspond to the default MySQL privileged account. Your MySQL server is running with this default, is open to intrusion, and you really should fix this security hole.
    15.xampp\mysql\dataに2007-08-28 XOOPS update\MySQL5.0\dataに格納されているxoopsフォルダをコピーしてその内容をphpMyAdminで読み出せるようになった
    16.XOOPS\mainfile.phpでユーザIDとパスワードをデフォルト設定してXOOPSの初期画面が出た
    17.pico モジュールをXOOPS\moduleにコピーしてエラーがすべて消えた
    18.ALTSYSとprotectorのモジュールを追加コピーする
    19.2007 SUMMER は自家サーバを実験している時期で
    babalabo.blogdns.com を使っていた
    20.冷たい森のサイトイメージ SHARED\AYANET をルートに置いて動作確認:リンクが固定アドレスになっているため内部には入れない
    21.FTPソフト WinSCP をインストールして,ゼルコバの木テント村のサイトイメージをダウンロードする:E:\ゼルコバの木テント村
    22.テント村にアクセスしようとしてエラー:Your server is running PHP version 5.2.3 but WordPress 5.3.2 requires at least 5.6.20.
    23.C:\xamppをxampp 2007とリネームした
    24.xampp の最新版 xampp-windows-x64-7.4.2-0-VC15-installer をインストール
    25.WordPress を開こうとすると「データベース接続確立エラー」になる
    26.XOOPSをlocalhostにして:Parse error: syntax error, unexpected ‘new’ (T_NEW) in D:\XOOPS\core\XCube_Root.class.php on line 496 のエラーになる
    27.XOOPS の最新版 legacy-stable.zip をインストールしてD:/XOOPS2.2/html でCube 2.2 のインストールウィザードが開く
    28.以下のエラーが出ている:Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2.2\html\install\class\textsanitizer.php on line
    86
    29.XOOPS2.2はPHP 5,MySQL 3.23xxで動作可能
    30.C:\xampp を C:\xampp 2007 にリネーム

    現在構築しようとしているゼルコバの木サイトには以下の3つのコンポーネントがある.

    1.冷たい森(馬場研究所ホームページ,HTML, CGI)
    2.ゼルコバの木ユーザ会クラブハウス(XOOPS ベース, PHP)
    3.ゼルコバの木テント村(WordPress ベース)

    WordPress と XOOPS はどちらもデータベースを使っている.ユーザ会ホームページのSQLイメージはバックアップがあるが,WordPress の方はまだ取っていない.ユーザ会の方はバックアップを取った時期,モジュールとの整合性などの問題があるので,先にテント村の方を調べてみることにしょう.WordPress ではデータベースサーバ名,管理者ID,パスワードなどが分かればアクセスできるはずだ.WordPress\wp-config.php では以下を設定している.DB_NAME,DB_USER,DB_PASSWORD,DB_HOST.これらの値は基本的にすべてロリポップ!から提供されているものだ.

    それを確認するためにはリモートサーバにアクセスしなくてはならないが,どうやってやっていたのだろう?MySQL のアプリがあったような気もするのだが… mmm…失敗した.localhostでXOOPSのインストーラが立ち上がってきたのでWordPressのデータベースで初期設定してしまった.ロリポップでは複数のデータベースが使えたような気もするのだが…⇒データベースは30個まで作ることができる.この際別々に作った方がよいと思う.

    phpMySQLadmin はブラウザからアクセスしていたはずだからドキュメント領域に置く必要がある.