picoモジュールのインストールは失敗,WordPressも難しい

Windows Live Writer の編集画面のレイアウトがまた変わってしまっている.両側に余白のあるレイアウトだ.この状態では段落のスタイルを「リスト」にした場合,段落番号が欄外にはみ出して隠されてしまうため,とても編集しづらくなる.デフォルトフォントもMeiryo UI 11ポイントからいつの間にかメイリオ 9.6に変わってしまっている.デフォルトフォントを設定するメニューが見つからないので現状では変更することができない.これまでの作業で少なくとも2つのポイントをクリアすることができた.

  1. xamppの古いバージョンの環境でXOOPS Cube(旧ユーザ会サイトイメージ)の復元に成功
  2. xampp7(xamppの最新版)の環境でXoopsCore25(本家XOOPSの最新版)のインストールに成功(XOOPS Cube から XOOPS X への移行は断念)

次の課題はxampp7の環境上で動作しているXoopsCore25に旧XOOPSのDBを移植して稼働させることだ.通常XOOPSではモジュールのアップデートを旧環境の上で実施してしだいに新しいバージョンに適合させてゆくという手順になるが,xamppの古いバージョンの上に新しいモジュールを移植するというのはかなり難しく,ほとんどの場合PHPを直接デバッグしないと先に進めないような状況になってしまうため,ここでは採用することができない.可能な唯一の道としては,XoopsCore25に新しいモジュールを追加した「新基盤」を構築した上に古いDBデータを注入するというステップしかない.XoopsCore25と新しいモジュールは親和性があるから,「新基盤」を構築するのはそれほど難しくないと考えられる.

この「新基盤」はxampp7で稼働しているものだから,PHP7を搭載した外部サーバー上でそのまま動かすことができる.新基盤は言わば空っぽのXOOPSシステムでありその上に旧DBデータを移植しなくてはならないが,DBデータ自体はテキストデータなのでその内部構造が分かれば通常のテキストエディタで編集することが可能だ.つまり,この作業は難易度はともかくとして実施可能な作業であると考える.てか,これしか道はない.ということで昨日の続きに掛かることにしよう.旧XOOPSと新XOOPSではxoops_trust_pathの構成が異なる.このため昨日は pico モジュールのインストールのところでつまずいてしまった.一旦内部構成が壊れると復元はなかなか困難なのでもう一度バックアップに戻ってやり直すことにする.

データベースに保管されたデータはxamppの中に含まれるのでxampp自体をバックアップに戻さなくてはならない.xampp7 2020-03-11に戻ってみよう.XOOPS25の方はXoopsCore25 2020-03-11-1に戻しておく.⇒ダメだ.localhostでエラーが起きてしまう.

image

だるまさんが転んでしまった!クッキーを削除しても動作は変わらない.DocumentRootはD:/XoopsCore25/htdocsになっている.XAMPPはアプリ登録されているので一度アンインストールした方がよいのかもしれない.その前に,C:/xampp7/htdocsを開いて状態を見ることにする.⇒動作的には問題ないようだ.従って,XoopsCore25 2020-03-11-1に問題があると考えられる.あとはXoopsCore25 2020-03-11しかない.この版はおそらくXoopsCore25のインストールに成功した最初のバージョンだ.⇒ここでもエラーが起きている!訳が分からなくなってきた.index.htmlすら開けない状態になっている.あり得ない!

image

やはり,xampp7を一度アンインストールするのが正解かもしれない.xamppのインストーラはPHPなのでまず,xamppをブラウザからアクセスできるようにしなくてはならない.いや,そんなことはやった記憶がない…install.phpではなく,setup_xampp.batを使ってみよう.⇒エラーが出る.

Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp7\install\install.php on line 311
Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp7\install\install.php on line 312
Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp7\install\install.php on line 313

このxamppはxampp-windows-x64-7.4.2-0-VC15-installer.exeによってインストールしたものだ.xampp7\install\install.phpを実行するためにはApacheが走っていなくてはならないが,そのためにはxamppをインストールしなくてはならない…旧バージョンのxamppはインストーラではなかったのでsetup_xamppだけで使っていたはずだ.⇒状態を戻すためにはこのインストーラで最初からやり直すしかないのではないだろうか?そうなると,XOOPS25の方もインストールからやり直すしかなくなる.なぜならXOOPS25のすべての設定はMySQLに入っているからだ.仕方ない.そうするしかないと思う.⇒インストールした.Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.2.

XOOPSの方はXoopsCore25-2.5.10だ.これは配置してlocalhostでhtdocsにアクセスすると自動的にインストール・ウィザードが開始される.上と同じエラーが発生した.XOOPS25はネットに接続していないとエラーになるのだろうか?いや,違うのではないか?

Error: Unable to connect to database

というエラーが起きている.そもそもmainfile.phpが入っていない.⇒いや,そういう仕様だったような気がする.インストール・ウィザードを実行したあとでmainfile.phpが作られていたと思う.いや,どうもおかしい.index.htmlは存在しないのにhttp://localhost/index.htmlでhtmlが表示されている.ApacheのDocumentRoot は “D:/XoopsCore25/htdocs” を指している.しかし,xampp7のコントロールパネル:MySQL⇒AdminでphpMyAdminが開かない.xampp7/htdocs/をlocalhostにしてXamppのダッシュボードからphpMyAdminメニューを実行すれば開くことができる.phpMyAdminはhtdocsの下ではなく,xampp7の直下にある.これをhtdocsの下にコピーして使っていたのではなかったろうか?⇒やってみよう.

ダメだ.mysqlの下に置いても同じ.これはかなり不都合だ.なぜだろう?急に動くようになった.どうも訳が分からない.xamppのコントロールパネルからphpMyAdminにアクセスすることはできるようになった.これはlocalhostをXoopsCore25/htdocsに切り替えても変化しない.ただし,ApacheのAdminボタンでlocalhostにアクセスするとエラーになる状態は変わらない.いや,このXoosCore25自体内容的におかしい.XoosCore25は本来xoops_trust_pathを持っていないはずなのにすでに作られている.何か間違ったものをコピーしてしまったような気がする.⇒コピーし直し⇒動作するようになった.Select your languageが出るようになった.ここでは英語しか選択できない.どうせやり直しをするのだから,日本語パックを導入してみよう.

いや,まだ何か動作がおかしい.未インストールの状態ではindex.htmlを指定しても強制的にinstall/index.phpにリダイレクトされてしまうようだ.またこのフォルダにはlanguageというフォルダがあるので,ここにjapaneseを入れてやる必要がある.いや,どうもそれも違うような気がする.japaneseの下にあるのはmodulesとcoreだが,modulesの中身は明らかにモジュールでインストールには関係ない.coreの中身はバージョンごとに分かれていて,最新の2.5.0ではutf-8→htdocs→language→japanese→でその下にあるのはhtdocsに置かれるようなファイルだけだ.これに対しinstall/languageの下にあるenglishにはinstall.phpやmysql.lang.data.sqlなどが入っている.これらはjapaneseの中には入っていない.

多分このフォルダをinstall/languageに配置しても意味ないと思われるが,一応やってみよう.一応言語の選択肢としてはjapaneseが出てきた.しかし,(当然ながら)言語が切り替わるという訳ではない.

Wrote XOOPS GPL License Key: ef06fa-31e233-4bca29-ed010f-766d7e

管理画面などはデフォルトテーマの方が慣れているのでそちらを使うことにする.

The mainfile.php is readonly.
Remove the folder install_remove_11267332765e6a42086dfde (or install if it was not renamed automatically by the installer) from your server.

動作がおかしい.Administration MenuとViewAcountで「制限されたアクセス」になってページを開くことができない.EditProfileは開ける.グループはWebmasters, Registered Usersになっている.テーマはxbootstrapで切り替えることができない.logoutでも「制限されたアクセス」になってしまう.別の場所からはログアウトできた.ログインしようとしただけで「制限されたアクセス」が起きる.どうも日本語を導入しようとしたのが失敗だったのではないだろうか?もう一度やり直すしかないと思う.⇒今度はApacheが起動できなくなってしまった.Apacheのエラーログには以下の警告が記載されている.

PHP Warning:  PHP Startup: Unable to load dynamic library ‘pdo_sqlite’ (tried: C:\\xampp7\\php\\ext\\pdo_sqlite (\xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\xa2\xe3\x82\xb8\xe3\x83\xa5\xe3\x83\xbc\xe3\x83\xab\xe3\x81\x8c\xe8\xa6\x8b\xe3\x81\xa4\xe3\x81\x8b\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82), C:\\xampp7\\php\\ext\\php_pdo_sqlite.dll (\xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\xa2\xe3\x82\xb8\xe3\x83\xa5\xe3\x83\xbc\xe3\x83\xab\xe3\x81\x8c\xe8\xa6\x8b\xe3\x81\xa4\xe3\x81\x8b\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82)) in Unknown on line 0

xampp側は何も操作していないつもりなのだが…フォルダの外装を剥いでなかった!つまり,フォルダの中にもう一つフォルダがあった.これでは動かない…

Wrote XOOPS GPL License Key: ef06fa-31e233-4bca29-ace847-3a4a17

今度はすべて動作するようになった.さて,ようやくモジュールのインストールに掛かれる.前回失敗したpicoから始めることにしよう.picoは2つフォルダを持っている.htmlとxoops_trust_pathだ.htmlの方はXoopsCore25のhtdocsに放り込むだけだが,xoops_trust_pathの配置が問題だ.XoopsCore25にはxoops_trust_pathを作ってあるので,そこに投げ込むだけでよいと思ったのだが,うまく行かなかった.その理由を調べなくてはならない.xoops_trust_pathにはmodulesとPEARという2つのフォルダが入っている.実際のxoops_trust_pathのフォルダはxoops_dataとxoops_libに分かれている.xoops_dataにはcaches, configs, data, protectorの4つのフォルダが入っている.xoops_libにはFrameworksとmodulesがある.一致する部分はmodulesだけなのでこの階層にコピーするのが正しいように思われるが,もう一つのPEARというのがよく分からない.PEARの下は

PEAR/text/Wiki/Parse/Default
              /Render

のような構成になっているが,中にはPHPが入っているのでxoops_dataに属するものではないように思われる.と考えると,実装のxoops_libがパッケージのxoops_trust_pathに該当すると見てよいのではないだろうか?まず,その線で試してみよう.⇒配置はこれでよいと思うのだが,This Module Admin→Install module(1)をクリックすると「install the latest altsys」というテキストが出るだけという状態になってしまう.ネットにアクセスする必要があるのだろうか?⇒ダメだ.かなり具合が悪い.module/picoを外してみよう.picoを削除したらInstall module(0)に変化してボタンをクリックしてもエラーは発生しなくなった.

install the latest altsys

というエラーが出ているが,altsysはmoduleではなかったろうか?altsysがXoopsCore25に実装されているのかどうかはよく分からないが,extrasの中には入っている.pico以外はこれを参照していないように見えるので,まだ実装されていない可能性もある.altsysというのはやはりmoduleのようだ.XOOPS25にはSystemというモジュールが実装されているので,おそらくそれを代替するものと考えられる.XOOPS Cubeは大体そのような作りになっていたのではないかと思う.picoを拾ってきたのは本家XOOPSのサイトだったと思うのだが…⇒確かにそのようだ.つまり,XOOPSでサポートしているモジュールということになる.

レポジトリにはAltsysというモジュールも存在する.既存Systemと共存できるのだろうか?altsysもxoops_trust_parhを持っている.その中にlibsというフォルダがあり,その下がaltsysだ.実装のxoops_trust_parhはxoops_trust_parh/xoops_lib/modules/となっているので,ここにaltsysを放り込むというのが妥当だろう.ここにはpicoとprotectorが入っている.htmlにはmodulesとpreloadが入っている.これでいけるはずだ.⇒Install module(1)になったが,ボタンクリックで画面が真っ白になってしまった.デバッグモードをオンにしてみる.popup modeを使ってみよう.以下のようなエラーが発生している.

Fatal error: require(): Failed opening required ‘D:/XoopsCore25/xoops_trust_path/xoops_lib/libs/altsys/xoops_version.php’ (include_path=’C:\xampp7\php\PEAR’) in D:\XoopsCore25\htdocs\modules\altsys\xoops_version.php on line 10

xoops_trust_pathの位置を合わせればよかったのだろうか?位置を変えて一応認識できたようだ.しかし,インストールした時点でエラーが発生し,Page is currently unavailableエラーになってしまった.戻るで復帰できたが,altsysはロードされていない.modulesには入っている.ALTSYSはインストール待ちの状態.以下のエラーが起きている模様だ.

Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_trust_path/xoops_lib/libs/altsys/include/altsys_functions.php line 9

line 9は以下のような行になっている.

$module_handler =& xoops_gethandler( ‘module’ ) ;

altsys : 1.インストール ~xoops_trust_pathの設定~
http://xoops-manual.net/modules/manual2/index.php?page=article&storyid=9

mainfileには以下のような記述がある.

define(‘XOOPS_TRUST_PATH’, XOOPS_PATH);

ここで

XOOPS_TRUST_PATH=XOOPS_PATH= ‘D:/XoopsCore25/xoops_trust_path/xoops_lib’

となっているので,パッケージのxoops_trust_pathをxoops_trust_path/xoops_libに合わせればよいということになる.いや,実際そのようになっているはずだ.むしろ,altsysはmoduleの中に入れるべきなのではないだろうか?それでは上記のエラーになってしまう.libsを使うように戻して以下のエラーになった.

Error: ParseError: syntax error, unexpected ‘new’ (T_NEW) in file D:/XoopsCore25/xoops_trust_path/xoops_lib/libs/altsys/oninstall.php line 39

このエラーはPHPのバージョンに関係するものではなかったろうか?いずれにしてもaltsysは新しいXOOPSにはよく適合していないように思われる…とりあえず,altsys と picoは外してxpressの導入を試してみることにしよう.ゴミが発生している可能性があるので,XOOPS25をもう一度クリーンインストールしてから始めることにする.今度はxoops_trust_pathというフォルダを作らずにxoops_libとxoops_dataをXOOPS25の直下に配置することにしよう.状況が少し変わったのでaltsysの導入にもう一度だけチャレンジしてみよう.xoops_libの位置がxoops_trust_pathということになる.一般設定でテーマを切り替えても切り替わらない.かなりおもしろくない.やはりaltsysはインストールできなかった.

しかし,altsysは必ずしも仲間外れという訳でもない.当初のパッケージのextrasの中にはatlsys関係のファイルが2本入っている.このうちのatlsys_functions.txtには以下のメモが入っていた.(誰がこんなものに気付くだろう…)

For those who use altsys module from GIJOE, replace /xoops_trust_path/libs/altsys/include/altsys_functions.php with the file altsys_functions.php in this directory.

よく分からないがもう一度やってみる価値はありそうだ.ダメだ.やはりだるまさんになってしまった.XpressMeをインストールしてみたが,エラーになった.

WordPress is not built in.
The uninstallation of the module is executed now.

いや,まだextrasにコピーしていなかったかもしれない.⇒extrasの内容をコピーしてインストールには成功しているのに,なぜか uinstall されてしまった.

XPressME Integration KitはWordPressをXOOPSモジュールとして動作させるために必要なコードを追加するものですので、これだけではモジュールとして動作しません。

ということのようだ.XOOPS から WordPress に移行したという人もいる.

XOOPSとWordPressの違いは
https://www.ailove60.com/?p=449

XOOPS X(Ten) → WordPress への移行
https://superficial.3724649.net/2017/10/06/20171006/

このユーザはphpMyAdminを使ってMySQLから吸い上げた記事データ(CSV)をUploaded Fileでまとめて投稿するという方法で成功したという.これは検討に値する記事だと思う.

XpressMe Integration Kit という日本語サイトがあるが,「永らくありがとうございました」ですでに終了している.最新投稿は2019/04/23だから比較的最近までは活動していた模様だ.XPressMe Integration Kit Ver 2.5.4は2016/06/16リリースとなっている.上記したようにWordPress本体のモジュールは自作しなくてはならないのだが,その情報源となっていたのがこのサイトだ.XpressMe Integration Kit は一般配布可能だが,本体モジュールは非合法化してしまったということなのではないだろうか?いや,XPressMeがXOOPSのレポジトリにある.⇒いや,違う.これはすでに手元にあるIntegration Kitだ.

WordPress本体と言っているのはWordPressが配布しているwordpressそのものだ.確かにXOOPSとほとんど同じ作りになっている.これをmodulesに入れてみよう.バージョンは5.3.2だ.⇒wordpressのフォルダの中身とXpressMe Integration Kit の中身を混ぜて一つにしたらうまく行ったようだ.動くかどうかは分からないが…確かに動いていない.

XOOPSへWordpress(モジュールxpress)を組み込む
http://www.knts.net/Xlc/modules/pico/index.php?content_id=3

上記リンクでは「解凍したWordpressの中にXPressME Integration Kitの中身を只放り込んでしまえばそれでXOOPSのモジュールの完成だ。」となっている.こちらではその逆にXPressME Integration Kitの中にWordpressの中身を放り込んだのだが,結果は同じになっているはずだ.(同名のファイルが存在しない限り)いずれにしてもこの方法は通用するはずなのでもう一度やり直してみよう.モジュールのアンインストールはすでに実行されているので,作り直したもので再インストールしてみよう.⇒以下のエラーになった.

Error: Call to undefined function mysql_get_server_info()

インストールは完了している.データベースとの接続確立エラーが起きているので本体はインストールされたもののデータベースに接続できていないという状況になっている可能性はあるような気がする.WordPressはXOOPSと独立にデータベースアクセスをやっているはずなので…WordPressの管理画面が出てくればいくらでも調整は可能だが,それ自体がオープンできない.phpMyAdminで見るとWordPress用のテーブルは生成されている…

mysql_get_server_infoというのはPHPのbuilt-in functionのようだ.この関数はMySQLのバージョンを返す引数を持たない関数であるらしい.いや,引数を渡す場合もあるようだ.この関数はsystemで1箇所使っている場所があるほかは,すべてWPからの呼び出しになっている.この関数名はmysql_func_array.phpの中では定義されているが,本体は見つからない.

https://www.php.net/manual/ja/function.mysql-get-server-info.php

警告 この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。詳細な情報は MySQL: API の選択それに関連する FAQ を参照ください。 この関数の代替として、これらが使えます。
mysqli_get_server_info()
PDO::getAttribute(PDO::ATTR_SERVER_VERSION)

しかし,define(‘XOOPS_DB_TYPE’, ‘mysql’);をmysqliとするとエラーになってしまう.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA