Windows Live MailからThunderBirdに乗り換えるべきか否か?それが問題だ

カスペルスキーの完全スキャンは1分前に完了している.7,0759,799本のファイルがスキャンされた.Windows Live Mailの未開封メールにはまだ2万通近くのメールが残っている.未開封メールは昨日すべて保存フォルダに移したつもりだったのだが…IMAPではフォルダから移動しただけではサーバーから削除したことにはならない.どうすればよいか?フォルダから移動したあと,未開封メールに残ったメールを削除ということはできるだろうか?多分,ダメだと思う.フォルダ間で移動した時点で未開封メールから消えているはずだ.一旦ゴミ箱に移してからそれを保存フォルダに移すというのはどうだろう?それなら効くかもしれない…

Yahooメールの方はPOPで受信しているので多分これまでの手順で始末できていると思う.Gmailの馬場英治アカウントが問題だ.日常的にWLMを使うとしたらこの問題を解決しておかなくてはならない.IMAPはサーバー上のすべてのメールをダウンロードしようとするのでサーバー側で削除されないといつまで経っても軽くならない.いま現在,馬場英治:朝日新聞のフォルダから360本くらいのメールを取り出すだけで多大な時間を消費している.もう一つ,ネット上で配信されてくる通知のダブリの問題も片付けなくてはならない.多分配信元に複数のメアドが登録されているためと思われるが,トラフィックを減少させるためにはこれを一本化する必要がある.WLMが今日のメールをすべて受信し終わらないと何もできない.しばらくは放置するしかない.

気になるのはMeryでファイル検索がまったくできない状態になっているという点だ.なにかインデックスファイルを作りそこなって間違った範囲しか検索できていないような気がする.エクスプローラの方がまだまともは結果を吐き出してくる.Meryを使えば見落としのない完全な検索ができると喜んでいたのにがっかりだ.どうも完全にバカになってしまったような感じだ.MeryはインストールしないでEXEを直に実行するというタイプのアプリなのだが…※ 一度検索を実行するとそのあとの検索時間がやけに短くなるのでどこかにインデックスファイルを作っているように見えるのだがどこにも見当たらない…⇒Meryのデータが以下にあった.C:\Users\babalabo\AppData\Roaming.Mery.hisとMery.iniの2つだがそれぞれ16KB, 26KBでそれほど大きなものではない.

※これは正しくない.MeryのディストリビューションにはEXEのインストーラとZIPがある.後者の場合は任意のディレクトリに配置するだけだが,前者はアプリとして登録される.

このフォルダを隠しても動作はまったく同じだ.前回検索条件はレジストリに入っているようだ.検索結果が信頼できなければ検索はまったく意味がない.なんでこんなことになってしまったのだろう?なにか使い方が間違っているのだろうか?このエディタはとても使い易い上にファイル検索ができるのでとても重宝していたのだが…どこで何が変わってしまったのか?まったく見当がつかない…エディタを取り替えるしかないのだろうか?Windowsで走るEmacsというのが存在するようなのでそれを導入してみようかな?サクラエディタはgrepとdiff機能がある.前に一度TeraPadというのをダウンロードしたことがある.

サクラエディタを使ってみた.検索はかなり遅いが確かなようだ.ただし,設定によって異なる結果になるところが気になる.文字コードセットを自動選択とすると49件,UTF-8では53件と差異が出てしまう.また,結果の表示も自動選択では文字化けしてしまう.UTF-8を指定すれば画面上は正しく表示されるが,ファイルを開くとSJISになってしまう場合がある.どうもいまいち使い勝手がよくない.TeraPadではGREP機能はプラグインになっている.emacsをダウンロードしてみたが,無茶苦茶大きい.215MBもある.https://github.com/mhatta/emacs-26-x86_64-win-ime にはバイナリがあったのでダウンロードした.emacs-26.3_x86_64-win-ime-20191231.zip それでもかなり大きい.総量がいくらあるのかはダウンロードしてみないと分からない…

ファイル検索専用ツールを使うという手もある.前にeverythingを導入しているがすでにアンインストールしてしまった.何が気に入らなかったのか忘れてしまったが,もう一度評価してみたい.使い勝手ではMeryがベストなのだが,どうもMeryはバイナリファイルの検索までは実行してくれないようだ.逆に言えばサクラエディタで文字化けのような動作はある意味当然なのかもしれない.いや,Yokkaがある.前から使っていたものだ.確かにこれは検索エンジンとして実績はあるが,Meryと同様いや,それ以上にファイル種別に敏感なようだ.やはりファイル検索ではサクラが最強であるように見える.53件検出している.これはUTF-8を指定した場合だ.エクスプローラでは11個しか検出されないが,項目をダブルクリックするとWLWで開いてくれるところは好感が持てる.

サクラの検出結果はファイル単位ではエクスプローラと一致する.つまり両者の結果はおそらく正しい..Yokkaは遅すぎてまだ結果が出ていない.テキストファイルに限定すればMeryはやはり最速と言ってよいのではないだろうか?サクラはその中間という感じだが,コード自動選択では文字化けしてしまうというのが難点だ.結論的にはWLWのWPOSTファイルを検索するのならエクスプローラが最適ということになりそうだ.Yokkaは遅過ぎて使い物にならない.ファイル検索についてはMeryとエクスプローラを併用ということで決着しておく.

ThunderBirdは2018/12/24にインストールして動作を試している.ThunderBirdはインポート・エクスポートを外部プラグインに頼っている.そのプラグインが,本体とバージョンが合わないという理由でインストールできなかったため最終的に使用を断念している.ThunderBirdhaはWebメールは何でも読めるのでWLMの代替にならないということは考えられない.もう一度インストールして試す価値はあると思う.あら,トップページにカンパ要請がある.

image

プログラムは40MBというかなり大きなものだ.折しもこんなもの無料配布してえらいな~ゼルコバの木でもそうできればな~と思っていたところだったので,小額を寄付することにしよう.1回のみ2,240円は少し高いので1,120円.そのくらいはまだ残っているだろう…ダメだ.通らない.デビッドカードは受け付けていないのだろうか?

新しいThunderBirdでは受信トレイと個別メールがタブで開かれるようになっている.これは悪くないかもしれない※.Webメールの一番の欠点は受信箱と受信したメール,それに対する返信を編集する画面が一つの画面に混在しているためとても使い辛いという点だ.この点はWLMの方がましだが,ThunderBirdのように思い切って独立のタブで管理するようになると画面も広々と使えて分かり易くなると思う.動作もWLMよりだいぶ軽い気がする.この感じなら懸案の「メールの整理」も思い切ってできるかもしれない.

※いや,よく見るとGmailもYahooもタブ式になっていた.これまで気づかなかっただけだ…Webという先入観念があるからだろうか?とても使い辛い感じを持っているのだが…

どうも失敗してしまったようだ.Gmailの2つのフォルダからローカルフォルダにメールを移したあと,うち1個を削除→そのあと,オプション→添付ファイルで保存先を東芝HDのThunderBird Mailに変更→再起動でローカルフォルダに移したメールが消えてしまった.「保存先」というのは添付ファイルの保存先の意味であり,ローカルフォルダを移転したことにはならないが,なぜかローカルフォルダが初期化されてしまった.いや違う.その前にローカルフォルダを東芝HDに移転していた.壊れてもいいようなデータで動作テストしておけばよかったのだが…いや,残っていた!ここにあるものをコピーすれば見えるようになるだろう.

C:\Users\babalabo\AppData\Roaming\Thunderbird\Profiles\jieemox4.default-release\Mail

ダメだ.フォルダをコピーしただけでは見えてこない.ローカルフォルダ内のフォルダは2つのファイルからなる.*.msfファイルがフォルダで拡張子のないファイルがメール本体だ.メール本体部はメール全体を連結したテキストファイルなのでエディタで開いて読むことができる.どこかにフォルダのメタ情報が格納されているところがあるはずだ.それが判れば復元できる可能性はあるが…まぁ,仕方ないとしよう.インポートはプラグインなしでできるようになっているようなのでWLMからインポートしてみよう.WLMを開いて2つのアカウントで受信エラーが発生するようになってしまった.ThunderBirdではGmailアカウントしか開いていないから,ThunderBirdの導入が原因であるとは考えられない…

○○○○ アカウントでメッセージを送受信できません。 ホスト ‘pop.mail.yahoo.co.jp’ が見つかりません。サーバー名が正しいことを確認してください。

サーバー: ‘pop.mail.yahoo.co.jp’
Windows Live メール エラー ID: 0x800CCC0D
プロトコル: POP3
ポート: 995
セキュリティ (SSL): はい
ソケット エラー: 11001

馬場 英治 アカウントでメッセージを送受信できません。 ‘AI’ フォルダーからのヘッダーのダウンロードは完了しませんでした。 ホスト ‘imap.gmail.com’ が見つかりません。サーバー名が正しいことを確認してください。

サーバーの応答: ネットワークに関係ないエラーのため、IMAP コマンドはサーバーに送信できませんでした。メモリが不足している可能性があります。
サーバー: ‘imap.gmail.com’
Windows Live メール エラー ID: 0x800CCC0E
プロトコル: IMAP
ポート: 993
セキュリティ (SSL): はい

ともかくWLMからThunderBirdへのエクスポートを試してみよう.これに失敗するとすべてがおしゃかになってしまう可能性もある.ThunderBirdを立ち上げるとこんどはThunderBirdでもGmailに接続できないというエラーになった.ただし,ローカルフォルダの2つのフォルダ(うち1つは空)の内容は正しく読み出せるようになっている.これは多分上記でフォルダをコピーしたのが見えるようになったためだろう.

WiFiルータを切り替えていなかった.⇒メールの移動を実行しようとしてステータスバーに「babalabos@gmail.com imap.gmail.com を調べています」を出したままロック状態になっている.⇒Gmailから2通受信したという通知が出た.そのあと,2145通のメールの受信が開始された.ともかく現在保管されているメールをどうにかしないことには始まらない.しかし,その前にWLMからメッセージをインポートできることを確認しなくてはならない…

WLMの利点はメールが個別ファイルになっているという点だが,それが逆に弱点になるという可能性もある.データの可搬性ということから言うと個別ファイルの方がずっと扱い易い…ThunderBirdに移行するとなるとその点も考えなくてはならない.⇒おかしい.どこかでインポート/エキスポートができる場所があったと思ったのだが,見つからない.「おすすめのアドオン」にはある.「複数ファイルを選択して保存」することはできる.ファイル形式はEMLだ.多分ThunderBirdもこのファイルを読み込めるはずだから,いざとなったときには逃げ場もある.⇒いや,あった.右上のメニューアイコン→ツール→設定とデータのインポートというのがある.⇒すべてインポート→データのインポート元のアプリケーションが見つかりませんでしたで終わり.

ImportExportTools NGはインストールできたが,実行メニューがどこにもない.設定パネルは開ける.また,無効化・削除のボタンも表示されている.⇒アドインは「ツール」の一番下に表示されるという話だが,何も追加されていない.上記の「設定とデータのインポート」でまずWindows Live Mailの「設定」だけをインポートする必要がある.⇒以下のパネルでぐるぐるが回り続けている.

image

ようやく完了したが,その先がない.ネットで調べるとアドオンをダウンロードしてインストールする手順が紹介されている.ThunderBird内のリンクからサイトに行きダウンロードしたが,「ファイルからインストール」しようとすると,以下のメッセージが出る.

image

何だこれは?振り出しに戻ってしまった.結局今回もインポートできないということになる.⇒以下に新しいバージョンがあった.

https://addons.thunderbird.net/ja/thunderbird/addon/importexporttools-ng/?src=cb-dl-mostpopular

しかし,動作は結局同じになった.ツールタブにはアドオン名が現れないので操作しようがない.この問題はGitHubでも現在進行形でディスカッションされている.議論はクローズとオープンの間を行ったり来たりしている.いずれにしても2年前からまったく進展していない.これが「フリーソースプロジェクト」の実態かと思うとがっかりだ.(失礼,人のことは言えないね)

アドオンはそれぞればらばらの個人が開発しており,それをまたばらばらの個人がプライベートにデバッグしているような状況が続いている.WLMにもサポート切れという問題があるが,ThunderBirdにも問題がある.Windows の Mail ソフトなどに強制連行してゆくような無形の圧力をひたひたと感じる.悪貨はよく良貨を駆逐するというところだろう.

WLMのメールのエクスポートはまだ終わっていない!⇒今のところThunderBirdにWLMのメールをエクスポートする手立てはないが,その前に一つ片付けておかなくてはならない大仕事がある.WLMのフォルダには重複メールがうず高く積もり上がっている.これをエクスポートする前に整理しておかなくてはならない.なぜなら,TBに移植してしまうと1フォルダ1ファイルになってしまうので,単体ファイルの重複というのを検出することが原理的に不可能になってしまうからだ.つまり,それをやろうとするなら今しかチャンスはない.しかし,ThunderBirdで小さなアドオンのバージョンアップにあれほど手こずっているとしたら,安易に移管するというのも考えものであるような気がする.ThunderBirdしか代替候補はないのだろうか?

現状ネット上ではWindows 10のメールアプリ,Microsoft Outlook, ThunderBird の3択という状況になっている.となれば,ThunderBirdしかないような気もする.昔はもっと選択肢があったような気がするのだが…しかしーーどうも形勢はXOOPS Xが現にそうであるようにかなり追い込まれているような印象がある.

WLMに重複ファイルが重積しているというのは過去数次にわたるアタックの後遺症とも言える.ようやくその過去の傷も癒えてかさぶたを剥がすことができるようになった.FileManyをインストールしてエキスポートしたWLMをチェック,以下のレポートが返ってきた.

image

検査したファイルは601163本※,うち769種,1543本の重複ファイルが発見された.重複を除けば,774本の重複ファイルが存在すると言ってよいだろう.「作成日が古いファイルを残して選択」という基準で削除することにする.事後処理としては別フォルダに移動などもできるが,ゴミ箱を空けてあるのでゴミ箱へ直行でよいだろう.チェックしてなにか問題があればゴミ箱から拾い出すこともできる.\復元されたアイテム\2020-03-17に集中しているようだ.しかし,全体のボリュームからいくと0.1%くらいにしか当たらない.ひょっとしたら半分くらいになるのではと思っていたのだが…エクスポートしたときの現物のサイズを測っていないので正確なところは分からない.

※この数字は上図の処理時間のあとの数字を取ったものだが,明らかに誤っているように思われる.これは秒の小数点以下の数値のようだ.

Windows Essential 2012からこんなメッセージが届いた.

image

連絡なしにコンテンツをカスタマイズするって,それができるから怖いね!図に乗ってWLM本体にもFileManyを仕掛けてみよう.今度はあらかじめサイズを測定しておこう.サイズ:7.34 GB (7,886,336,211 バイト),ディスク上のサイズ:8.36 GB (8,986,787,840 バイト).⇒重複ファイル検査の結果が出た.

image

134801本のファイルを検査して29115種,67499個の重複ファイルが検出されている.純重複ファイル数は38384本,全体の28%が重複していたことになる.これは実感に近い数字だ.サイズ:5.01 GB (5,380,880,170 バイト),ディスク上のサイズ:5.82 GB (6,252,457,984 バイト)になった.ファイル数: 96,423、フォルダー数: 564.⇒相当な荒療治が終わったがALMを再起動して問題なく動作しているようだ.この状態でもう一度エクスポートしてみよう.

10.1インチ 2 in 1 ミニノートと9インチのWindows 10 タブレットを合体させる

かなりいい感じになってきた.

IMG_20200317_011327

画像左の10.1インチ 2 in 1 ミニノートがネットアクセス専用のフロントエンド,左は9インチのWindows 10 タブレット.タブレットはノートの補助画面として使われる.Mouse Without Borderでマウス・キーボード・トレーを共有しているのでほとんど一体化した一つのマシンとして扱うことができる.画面が小さいのでタッチ操作するのはスマホより大変だったが,マウスが使えるようになったので格段に楽になった.Chromeのズーム倍率も125%に設定した.

Gmailサーバーからのメール取り出しはパネルを出して止まっていた.

image

迷惑メールフォルダには283本メールが入っている.全体では未開封のメールが16,618本入ってきた.ヤフーメールも受信してみよう.⇒ダメだ.ログインできない.パスワードの控えもない.⇒ブラウザでYahooメールにアクセスしてパスワードの書き換えを実行→通らない.メール管理→IMAP/POP/SMTPアクセスとメール転送で設定を変更したがダメだ.⇒どうもこの「IMAP/POP/SMTPアクセスとメール転送」の設定がページ移動しただけでリセットされてしまっているように思われる.

この機能を利用するにはYahoo!ダイレクトオファーへの登録が必要となっている…登録済のように思われるのだが…⇒メールの設定画面の右上スクロールしないと見えない位置にに保存ボタンがあった.⇒動作するようになった.おかしい.トレーの共有が動作しなくなっている.

設定ではShare Clipboardになっているし,これまでは問題なく動作していたのだが…かなりおもしろくない…カスペルスキーはEドライブのスキャンを完了してルートキットスキャンというのを始めた.ルートキットというのは,システム内のマルウェアを隠蔽するプログラムでバックドアはその一部機能だ.まだ1%なのでこれも同等掛かりそうだ.Eドライブの検査では3,212,599個のファイルが検査されている.

修理に出していた 2 in 1 タブレットが戻ってきた.

修理に出していた 2 in 1 タブレットが日通航空便で戻ってきた.ようやくこれで本調子に戻れる.最初の作業はChromeの導入とカスペルスキーへの接続,次にWindows Update.これがかなり掛かりそうだ.それが終わったら Mouse without Borders の導入.Mouse without Borders が使えるようになると,マウスとキーボード,トレーの共有が可能になる.オフライン作業では開発機のマウス,オンライン時にはノートの無線マウスを共有することにする.オフラインと言っても契約切れ LTEの pocket WiFi ルータの廃物利用で繋がっている.これで開発機をネットに出さないという原則の履行が容易になった.ゼロトラストの時代にはこの程度のことはやらないと身を守れない.

サイトに投稿するためのHTMLエディタとしてWindows Live Writer も導入しなくてはならない.⇒MSサイトからダウンロードしたバージョンは以下のようなエラーが出てインストールできなかった. このエラーは結構あちこちで発生しているようだ.

image

http://web.archive.org/web/20170120121901/http://wl.dlservice.microsoft.com/download/F/A/D/FAD48A38-8F81-4DA1-8302-EFAB6FEC4A92/ja/wlsetup-all.exe

上記リンクのアーカイブからwlsetup-all.exeをダウンロード→インストールした.この中にはWindows Essentials 2012がまるごと入っている.ただし、Movie Makeer と Photo Galalley はインストールされなかった模様。Windows Live Messenger は入っている。※

※見落としていた.Movie Makeer と Photo Galalley,どちらもインストールされている.

Windows Live Writerのファイルはドキュメントに保存される.この場所を指定して変更できるとよいのだが,そのようなオプションは見当たらない.⇒バックアップを含めて2GBあるが,そっくり2in1にコピーしておこう.転送だけで約30分掛かるという表示が出ている.2in1(マシン名 BlackHawk)のCドライブの空き容量は10GBくらいしかないので無駄遣いはできないのだが…microSDが使えれば空き領域238GBあるので余裕なのだが…寝ている間に転送が止まっていた。ファイルが存在しないというエラーになっている。無視で終了してしまった。コピーではなく移動していたのかもしれない。

Google 日本語入力をダウンロードして導入した.Windows Live Mail も使えるようにしておこう.Windows Live Mail に蓄積されたファイルは現在5GBある.WLMは保存フォルダの切り替えができるのでmicroSDに置けるだろう.Windows Live WriterのファイルもmicroSDに移動し,ドキュメントフォルダには比較的最近のものだけを残すようにしてみよう.WLWにはDrafts 939本,Recent Postsに989本入っている.ドキュメントホルダーにはこのうち,2019年以降のものだけを残すようにした.これで7GBまで減っていたCドライブの容量は9GBまで回復した.(Cドライブは全体で27.8GBしかない)⇒食品の買い出しに行っている間に半分くらいは終わっているかと思ったが,「このファイルには移転できない属性を持っています」で止まっていた.再開したが,残り時間7時間半と出ている.

PCの方は明いているので作業を進めることにしよう.まだ,始業時バックアップも取っていない.XOOPS25に移植された10個のモジュールはすべて開けるようになっている.ただし,picoだけは画面が出ていない.警告は無数に出ているが一応動作可能な状態になっている.

何時間眠ったのか分からないが,転送は終わっていた.しかし,microSDのフォルダをWLMのフォルダに使うことができない.USBメモリも使えない.外付けHDなら使えるが,東芝のポータブルHDはUSB3.0でまったく認識できない.結局古い外付けHDを繋いで使うことにした.ここにメールデータのストックを送るのにまたかなり時間が掛かりそうだ.最初は残り5分と表示されていたのが1時間半になり,それでもあと30分に表示が変わったのでそのうち終わるだろう.外付けHDは3つのパーティションに区切られているが,そのうちの一つは10GBの空きがあるのでまだまだ使えるだろう.回転音が聞こえるというのも昔懐かしという趣だ.WiFi接続のHDの購入を予定していたが,この外付けを使い潰すというのでもよいのかもしれない.失敗した.フォルダをすべて閉じてしまったため,転送が中断してしまった.もう一度やり直すと,今度は残り時間2日以上になってまったく進まなくなってしまった.

image

フォルダのプロパティの数字もおかしい.元データは74,562本のファイルがあるはずなのにどちらにも5千個くらいしか入っていない.どうも埒が明かないのでHDをPCに戻して直接コピーすることにした.microSDのフォルダも削除することにしたが,ここには実際には74,561本のファイルが入っていた.PC上でのコピーは10分程度で完了する見込み.今日はなぜか1Lポットの沸騰音がやけに大きく聞こえる…Window Live Mail の起動に失敗した.

image

再起動していないのだが,この状態から抜けられない.

image

上と同じパネルを出して止まった.万事休す.普段はブラウザでGmailとYahooメールを直接読んでいるのだが,環境も整ったこともありWLMを使う本来のスタイルに戻そうと思ったのだが…そもそもカレンダーなどはこれまで一度も使っていないのだが…カレンダーというアプリ自体は問題なく動作している.WLMにはメールの他に,カレンダー,アドレス帳,フィード,ニュースグループ機能が入っている.このカレンダーとアプリのカレンダーが競合しているのではないだろうか?アドレス帳の中身は空になっている.PCでアドレス帳を開こうとすると,「知り合いが登録されていません.Windows Live から知り合いを参照するためには,Windows Live ID にサインインしてください.」というメッセージが出る.Window Live ID には多分サインインしたことはないと思うが…

アドレス帳が空になっているというのは気付かなかったが,復元されなくてはメール本文だけだから,それ以外の付属ファイルを全部削除してしまってもよい.上記のエラー:0x8E5E0458というのは以下のような意味だ.

RecordTooBigForBackwardCompatibility:record would be too big if represented in a database format from a previous version of Jet.

一番大きいのはMail.MSMessageStoreというファイルで410MBもある.これはどうもデータベース形式のファイルになっているのではないか?という気がする.バイナリファイルのようだ.このファイルを削除し,backup/newの中身も全部削除したが,状態は変わらない.

Windows メールのメッセージ ストアを再構築する方法
https://answers.microsoft.com/ja-jp/windows/forum/windows_vista-windows_programs/windows/926ed616-8874-e011-8dfc-68b599b31bf5

*.chk, *.log, *.sqmファイルをすべて削除した.calendarsというフォルダ(ほとんど空)その他,空のフォルダを削除,拡張子 jfm, jrs, xml およびアカウントデータ以外はすべて削除して立ち上がってきた.ちらっと「データベースを復旧しています」を表示したあと,下記を出して停止した.

image

カスペルスキーは走っているが,WLMをブロックした形跡はない.⇒「安全なアプリケーションだけを実行」はオフになっていた.通知アイコンに「ドライブエラーのスキャン」のような通知が入っていたのでクリックしたら外付けHDのスキャンが始まった.かなり大きな音がしたり,赤紫の点滅になったりとかなり不安を掻き立てるような動作が続いている.まだインジケータは青に戻っていない.カスペルスキーのパネルでは「スキャン実行中」のようなステータスにはなっていない.侵入されている可能性もあるような気がする.外付けHDが警告音を鳴らすというのはどういう場合なのだろう?このドライブはおそらく20年は使っていると思われるのでもはやお役御免とするべきなのかもしれない…IODATAの製品だ.

「ドライブエラーのスキャン」を表示したのはカスペルスキーだ.念のため外付けドライブのスキャンを済ませておこう.外付けドライブのスキャンではデフォルトでDドライブのmicroSDが対象となってしまうので,カスタムスキャンでG:をスキャンするようにした.かなり掛かるのではないかと思う. ⇒スリープに入ってしまったのでやり直しになってしまったが,そのあとの動作もおかしい.電源オフから立ち上げてもランプが点滅するだけで先に進まない.⇒結論的にこのHDはお役御免ということになった.20年以上働いてきたのだからもういいだろう.東芝ポータブルHDにこのドライブの全バックアップを取ったのはだいぶ前だ.

東芝ポータブルHDがミニノートに接続できればそれでよいのだが,東芝HDでは専用ケーブルでUSB3.0を出力するようになっている.ミニノートはカタログではUSB3.0コネクタを持っているが,あいにくミニなので変換ができない.ネットで探せば変換ケーブルがあるかも知れないが,少なくもヤマダにはない.いや,間違えていた.このミニノートのUSB3.0ポートはスクリーン左上の小さいコネクタと思っていたがそうではない.これは2.0のmicro Bだ.実際,ポータブルHDを接続して認識できた.⇒WLMの保存フォルダを変更→再起動で問題なく立ち上がってきた.これで使える準備はできたが,一度完全スキャンを掛けておこう.このドライブはWLMの5GBを移してもまだ25GBの空領域がある.※

※これまではUSB2.0と3.0の違いなどほとんど無頓着に来たがようやくどういうことになっているのかほぼ把握した.上記で東芝HDの専用ケーブルに付いている奇妙な形状のコネクタも独自パーツではなくちゃんとMicro USB3.0 Type-Bという規格に則ったものだ.

Download フォルダもカスタマイズできるのではなかったろうか?⇒Chromeで設定できる.これをE:Downloadsとして共有できるようにした.ただし,PC側のネットワークにBlackHawkが見えてこない.BlackHawkからはFireBirdは見えているのだが…ネットワーク検索でも見つけられない.Mouse Without Bordersでは接続できているのだが…

現在常用しているメールアカウントはGmailとYahooの2つだけだ.これらはどちらもWebメールでブラウザ上で送受信するようにしていたが,今後はWindows Live Mailで扱うようにしたい.WLMで扱うようにすると検索やバックアップも容易になるし,編集作業もブラウザでやるよりはずっと楽にできる.Yahooメールアカウントはバックアップデータの中にすでに入っているが,Gmailアカウントは入っていない.これはネットに復帰後の作業でGmailをIMAPで読み込むことに失敗していたためだ.

昔はWebメールアカウントはセキュリティ上もっとも脆弱なものでビジネスなどで使うのはもっての他という雰囲気だったが,世の中は変わった.いま,セキュリティ的にもっとも堅牢なのは Outlook や Gmail, YahooなどのWebメールだ.その分これらのサービスは非常に厳格なログイン基準を採用している.たとえばGmailやYahooメールなどでは二段階認証などが使われている.もっとも危ないのはそこいらのISPプロバイダーの提供する「普通の」メールアカウントだ.このような仕様変更のため,GmailやOutlookなどのメールをIMAPで読み取ることがとても難しくなっている.

Gmailの仕様変更でWindows Live Mailでログインが認めらなくなった場合
https://www.ikt-s.com/gmail_windows-live-mail/

解決策としては①Web上でブラウザを使ってアクセスする,②ThunderBirdなどセキュリティの高いメーラーを使う,③セキュリティの低いメーラーを使うオプションを選択するという3択しかない.我々はWLMをメーラとして使いたいので③の選択肢しかない.現状この選択はやむを得ないと思う.※

※ThunderBirdとデータ互換性があれば切り替えるというオプションもあり得るかも…⇒WLMからThunderBirdにエキスポート/インポートするのは難しくない.検討の余地はある.

Gmailの受信箱には3545本もメールが入っている.ある特定の文字列を検索→すべてのメールを検索しますか?にはいと答えたらこれらのメールをすべてサーバーから取り出しに行ったため下のパネルを出してほぼハング状態になってしまった.

image

XOOPS25に主要なモジュールをインストールした

本家XOOPSの最新版(以下XOOPS25)の環境に最新モジュールを導入して「新基盤」を構築するという作業を行っているところだ.すでにXPressMe(WordPress),picoの2モジュールは導入済みとなっているが,まだ走行時にエラーが発生している.いずれもPHPのバージョンの問題と考えられるが,相当広範囲で発生している模様で今のところ収束の見通しは立っていない.ともかく,やるっきゃないので進むことにしよう.

まず,始業時バックアップから.今日はXOOPS25,xampp7とも,まるごとバックアップを取っておくことにする.バックアップファイルのネーミングで日付が変わったものは新しい日付を当日日付としているが,宵越しのものは前日の日付に追番を付したものを使うことにしよう.つまり,始業時バックアップはつねに追番の付かない日付で表示される.(以前からそういうルールだったのだが,徹底していなかった)念のため,MySQLも取っておこう.

管理画面下部の状態表示ブロックはErros(2)で以下のエラーが表示されている.

Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; D3LanguageManager has a deprecated constructor in file D:/XoopsCore25/xoops_lib/libs/altsys/class/D3LanguageManager.class.php line 3

Unknown: Non-static method D3LanguageManager::getInstance() should not be called statically in file D:/XoopsCore25/xoops_lib/modules/pico/xoops_version.php line 8

ただし,これらは警告のようでだるまが出るようなFatal Errorではないので,このままもう少し進めることにする.まず,使われていたモジュールを可能な限り復元しておきたい.XOOPSサイトとGitHubから集めたモジュールは以下の8種(altsys, smartfaq, tellafriend, XPressMe, Pico, WebLinks, Evennew Mailer, Mantis Bug Tracker)でうち,altsys, XPressMeとpicoはインストール済み,それ以外のものも一度インストールに成功しているので多分簡単に片付くと思う.まず,これをやっておこう.一つづつ片付けてゆくことにする.

evennews ゼルコバ通信の発行に使っていたモジュール.インストールは問題なく完了したがモジュール画面でデータベースのQUERIESでエラーが起きている.

0.000613 – SELECT * FROM wp_blogs
Error number: 1146
Error message: Table ‘xoops25.zelkova_wp_blogs’ doesn’t exist

mantis バグレポート用モジュール.インストール画面→This Module Adminでだるまだ.

Error: Error: Call to undefined function split() in file /modules/mantis/core/timer_api.php line 46

https://www.marineroad.com/staff-blog/19442.html

「split関数」は PHP5.3.0 で非推奨となり、 PHP7.0.0 で削除されました。

ということのようだ.代替関数があるという.preg_split(),explode(),str_split().splitは正規表現を与えて文字列を分解するので,preg_splitを使うのが妥当と思われる.split()は以下のファイルに出現している.

1.\class\logger\render.php(193):
2.\modules\mantis\core\email_api.php(647, 661):
3.\modules\mantis\core\timer_api.php(46):
4.\modules\wordpress\wp-content\plugins\xpressme\include\xpress_common_functions.php(329, 346):
5.\modules\wordpress\wp-includes\class-wp-customize-manager.php(2069):
6.\modules\wordpress\wp-includes\media-template.php(34, 134, 1197, 1288):
7.\xoops_lib\modules\protector\library\HTMLPurifier\AttrDef\HTML\Class.php(14, 19):
8.\xoops_lib\modules\protector\library\HTMLPurifier\AttrDef\HTML\Nmtokens.php(24, 39):

ただし,protectorで使われているsplitはHTMLPurifier_AttrDef_HTML_Classクラスの関数で別物だ.また,logger, wordpressで使われているsplitも引数を一つしか持っていないので別物と思われる.mantis以外ではxpressmeのxpress_common_functions.phpで使われているが,これはとりあえず,パスしておこう.従って修正箇所はmantisの3箇所だけということになる.ダメだ.まだ通らない.

Error: Error: Call to undefined function mysql_escape_string() in file /modules/mantis/core/database_api.php line 292

この関数は上記の1箇所しか使われていない.しかし,mysqli_escape_stringという関数も使われた箇所がない.ともかくmysqli_escape_stringという関数名に変更してみよう.mysqli_escape_stringという関数は存在するが引数の個数が異なる.⇒どうも新しい関数ではDBへのリンクが必要になっているようだ.mysqli::escape_stringは使えるだろうか?ダメだ.この関数は動的関数なので静的な呼び出しはできない.以下のようにしてみたが無理なようだ.

$foo = new mysqli;
return $foo->escape_string( $p_string );

だるま→Error : Error: Call to undefined function mysql_result()
SYSTEM WARNING: mysqli::escape_string(): invalid object or resource mysqli

皆さんどうやってこれを切り抜けているのだろう?esc_sqlという関数があるみたいだ.ただし,これはWordPressの中だけの話かもしれない.やはり見つからない.wordpress本体ではesc_sqlを以下のように定義している.

function esc_sql( $data ) {
    global $wpdb;
    return $wpdb->_escape( $data );
}

mantisではDBにアクセスするときにはつねにホスト名使っているので,このようなグローバル変数を持っていないと思われる.mantisもdb_connectを持っているが,ブール値を返している.mantisはmysql_connectでDBに接続している.この関数もmysqli_connectに換えなくてはならないが,その戻り値をグローバル変数にいれておけばアクセスできるかもしれない.ここは一旦保留して次に進むことにする.smartfaq_masterを導入する.⇒再描画でエラーが出てしまった.picoがエラーを出している.

Fatal error: Cannot make static method MyTextSanitizer::getInstance() non static in class PicoTextSanitizer in D:\XoopsCore25\xoops_lib\modules\pico\class\pico.textsanitizer.php on line 14

これはあとで見ることにしてsmartfaqを導入しておこう.⇒インストール画面→This Module Adminでエラーになった.

Fatal error: require_once(): Failed opening required ‘D:/XoopsCore25/htdocs/modules/smartfaq/class/category.php’ (include_path=’C:\xampp7\php\PEAR’) in D:\XoopsCore25\htdocs\modules\smartfaq-master\class\faq.php on line 11

フォルダ名をsmartfaq_master→smartfaqに変えてこのエラーは一応収まったがどうも動作がいまいちだ.もう一度インストールし直してみる.smartfaqはアンインストールできたが,DBがまだ残っている.⇒MySQLで削除した.今度はうまく行った.SMARTFAQの管理画面にも入れる.TELL A FRIENDもインストールできた.weblinksはインストールできたが,happy_linuxが必要というメッセージが出ている.happy_linuxはXOOPS Xのサイトにはあったような気もするが,XOOPSのModule Repositoryには置いてない.

http://www.xoopscube.net/modules/xupdatemaster/index.php?action=StoreView&store_id=11

上記リンクからhappy_linux-master.zipをダウンロードした.⇒インストールできた.旧サイトで使っていたモジュールでXOOPS Xに残っているものがまだあるのではないだろうか?XOOPSからダウンロードできなかったものでXOOPS Xにあると思われるものには以下がある.

  • 1.bulletin
  • 2.cubeUtils
  • 3.d3forum 
  • 4.mobile_templates
  • 5.search
  • 6.hypconf 見つからない
  • 7.happy_linux 導入済み
  • XOOPS Xでも見つからないモジュールには以下がある.

  • 1.changemail 見つからない
  • 2.dbtheme
  • 3.download 見つからない
  • 4.extras 見つからない
  • 5.hdLegacy 見つからない
  • 6.iframe 見つからない
  • 7.legacyRender 見つからない
  • 8.resendmail 見つからない
  • 9.resetuname 見つからない
  • 10.stdCache 見つからない
  • 現時点でSYSTEMを含めて12個のモジュールがインストールされている.以下の6個のモジュールをネットからZIPでダウンロードしてある.bulletin, cubeUtils, d3forum, dbtheme, mobile_templates, search.しかし,これらのインストールは後回しにして現在導入済みのモジュールの動作確認を行い,データベースをリストアしてどこまで復元可能かを見ることにする.「Unknown: Methods with the same name as their class will not be constructors in a future version of PHP」や「Notice: Only variables should be assigned by reference in file」などの「警告」は当面無視することにする.Deprecated()も同様に無視される.

    ただし,Queries()の中で赤字で表示されるエラーについてはチェックを要する.とりあえず,モジュールの管理画面が開けるかどうかを個別に確認しておこう.

    SYSTEMS Errors(6), Dprecated(1), Queries(33)で以下のエラーが発生している.

    0.000291 – SELECT * FROM wp_blogs
    Error number: 1146
    Error message: Table ‘xoops25.zelkova_wp_blogs’ doesn’t exist

    WordPress関係のテーブルはすでに16個生成されている.またそれと別にprefixの付かないテーブルが12個ある.これらは何らかの理由で誤って作られているものである可能性がある.接頭辞が付かないテーブルというのは基本的に考えられないからだ.zelkova_wp_blogsが存在していないのはまだ作られていないためという可能性もある.WordPressの動作を見ておこう.

    WORDPRESS: Errors(25), Deprecated(5), Queries(41) ではエラーが2件起きている.一つは上と同じだが,もう一つある.

    0.000362 – SELECT mid FROM _modules WHERE `dirname` = ‘wordpress’
    Error number: 1146
    Error message: Table ‘xoops25._modules’ doesn’t exist

    zelkova_modulesは存在する.このエラーはかなり具合が悪い.一度バックアップを取ってから,これらのおかしなテーブルを破棄してみることにする.XOOPS25とMySQLだけバックアップし,併せてxoops25データベースのSQLを取っておこう.エクスポートでエラーが出ている.

    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 ”,
    )

    phpMyAdminの中では例外なく上記の仕様になっている.⇒いや,確かに指摘された位置では逆になっている.直してみよう.⇒確かに収まった.接頭辞の付いてないテーブルを独立にエクスポートしておく.テーブルの個数は101個に減少した.しかし,WPのクエリエラーは変わらない.XOOPS_DB_PREFIXが通っていないことが考えられるが,暫定的にwp-config.phpを書き換えていることが影響しているのだろうか?追いかけるのは止めて一通りチェックしてみよう.

    ALTSYSでダルマが出た.Error : Error: Call to undefined method XoopsTpl::XoopsTpl()というエラーが起きている.$XoopsTplという変数は頻繁に出現するが,XoopsTplというのはクラス名で,XoopsTpl()はそのコンストラクタだ.それが未定義というのはちょっと考え辛いのだが…

    Error: Error: Call to undefined method XoopsTpl::XoopsTpl() in file D:/XoopsCore25/xoops_lib/libs/altsys/class/D3Tpl.class.php line 9

    D3TplというのはXoopsTplの派生クラスでD3Tpl.class.php line 9というのはそのコンストラクタの中で呼び出しているparent::XoopsTpl() ;の行だ.PHPでは親のコンストラクタを明示的に呼出す必要があるのだろうか?XoopsTplはSmartyの派生クラスで,確かにXoopsTplという名前のコンストラクタは持っていない.C++の場合はクラス名が自動的にコンストラクタ名になるのだが,ここでは任意の名前を付けることができてしかもそれを派生クラスのコンストラクタから明示的に呼び出さなくてはならないということのようだ.XoopsTpl::__constructというのが,その名前だ.XoopsTpl() の出現は45箇所あるが,こういう呼び出し方をしているのはここだけだ.⇒一応このエラーは解消したものと思われるが,まだ後がある.

    error: ArgumentCountError: Too few arguments to function XoopsForm::__construct(), 0 passed in /class/xoopsform/form.php on line 141 and at least 3 expected in file /class/xoopsform/form.php line 122

    XoopsFormクラスにはXoopsFormという関数の他に__constructも定義されている.

    public function __construct($title, $name, $action, $method = ‘post’, $addtoken = false, $summary = ”)

    __constructの最初の引数3個にはデフォルト値がないので明示的に与えなくてはならない.しかし,XoopsFormは引数なしで呼び出されるのでどうすることもできない.これは,この関数XoopsFormの定義が間違っているとしか言いようがない.XoopsForm()は2箇所から呼び出されているがいずれも引数5個の呼び出しになっている.__constructの引数をそっくり持たせるようにした.⇒これでエラーは解消した.

    picoではエラーが発生する.

    Fatal error: Cannot make static method MyTextSanitizer::getInstance() non static in class PicoTextSanitizer in D:\XoopsCore25\xoops_lib\modules\pico\class\pico.textsanitizer.php on line 14

    WebLinkでも起きる.

    Fatal error: Cannot make static method happy_linux_locate_factory::getInstance() non static in class weblinks_locate_factory in D:\XoopsCore25\htdocs\modules\weblinks\class\weblinks_locate.php on line 64

    これら以外のモジュールでは少なくとも最初の画面を開くことはできる.PicoTextSanitizer はMyTextSanitizerの派生クラスで pico.textsanitizer.php on line 14 には以下の関数がある.

    function &getInstance()
    {
        static $instance;
        if (!isset($instance)) {
            $instance = new PicoTextSanitizer();
        }
        return $instance;
    }

    MyTextSanitizer::getInstance はstaticとして定義されている.

    public static function getInstance()
    {
        static $instance;
        if (!isset($instance)) {
            $instance = new MyTextSanitizer();
        }
        return $instance;
    }

    これはかなり混乱したコードだ.MyTextSanitizer::$instanceはstaticだからシステムに一つしかないはずだ.何をやろうとしているのかよくわからない.static function &getInstance のようにgetInstanceをstaticに指定してこのエラーは消えたが,画面が表示されていない.picoというタイトルが表示されているだけだ.

    image

    以下のようなWarningが出ているので,おそらくhtmlが生成されていないか紛失してしまっているのだろう.

    Warning: Smarty error: unable to read resource: “db:altsys_inc_mymenu.html” in file /class/smarty/Smarty.class.php line 1100

    weblinks_locate.phpの方も同種のエラーなので同じ修正を入れてみる.WebLinksでは簡単な画面が出た.

    XoopsCore25にWordPressをインストールできた

    龍司@RYUSさんという方からコメントが入っていた.発信は2020/03/12.このところメールをまったくチェックしていないので気付かなかった.この方はXOOPS Cubeを使ったシステム開発をやっている株式会社RYUSの代表者でXOOPS Cubeプロジェクトのトップランナーとも言うべき方だ.まだネットにアクセスできていた頃はうさでき(うさぎにもできるXOOPS Cube)というメールマガジンを購読していたが確かそことも接触があったはず.※

    ※XOOPSうさぎ通信の発行主体は株式会社RYUSだった.注文の多いXOOPS屋サイトの更新は2011/07/11で止まっている.

    コメント返ししたのはよいが,テント村を開いてもコメント欄がどこにも見当たらない.設定が非表示になっていればコメントを付けることもできないはずなので,どうなっているのか訳がわからず探しまくったところようやくアクセスの方法が分かった.WordPressのコメント欄には個別のページを開いた状態の場合しか見えないようになっている.ページを個別に開くためには記事のタイトルをクリックする必要がある!今の場合は,

    2020年3月11日 本家XOOPSの最新版が走るようになった! https://zelkova-tree.net/WordPress/2020/03/11/apache%e3%81%ae%e5%8b%95%e4%bd%9c%e3%81%8c%e3%81%8a%e3%81%8b%e3%81%97%e3%81%84-php-ini%e3%81%ae%e4%bf%ae%e6%ad%a3%e3%81%8c%e5%8f%8d%e6%98%a0%e3%81%95%e3%82%8c%e3%81%aa%e3%81%84/

    picoとそれが参照しているaltsysの導入には失敗したが,XPressMe(WordPress)はインストールできた.XPressMeの動作はまだ確認していないが(エラーが発生している),エラーの規模は大きくないので多分収束できるのではないかと見ている.picoはマニュアル(オンラインヘルプ)を書くのに使っていたはずなので何とか復活させたいのだが,最悪の場合,記事だけをWordPressに移植することは不可能ではないと思われるので,一番肝心なところはWordPressが使えるようにするということではないかと思う.まず,バックアップを取ってから開始することにしよう.WordPressでは以下のようなエラーが発生している.

    Error: Call to undefined function mysql_get_server_info()

    mysql_get_server_infoという関数はPHP7では廃止されている.代替として,mysqli_get_server_infoを使えというサジェスチョンが出ている.XOOPS25のsecure.phpで define(‘XOOPS_DB_TYPE’, ‘mysql’); となっているところをmysqliに変えるとXOOPS25が立ち上がらなくなってしまう(だるまさんになる)ので,個別に対処するしかない.Meryで検索して以下の7件がヒットした.

    D:\XoopsCore25\htdocs\modules\system\js\code_mirror\tokenizephp.js(392):
    D:\XoopsCore25\htdocs\modules\wordpress\admin\index.php(175):
    D:\XoopsCore25\htdocs\modules\wordpress\admin\index.php(249):
    D:\XoopsCore25\htdocs\modules\wordpress\include\oninstall.php(92):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-admin\includes\class-wp-site-health.php(162):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(3621):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\js\codemirror\codemirror.min.js(27):

    念のためmysqli_get_server_infoも検索してみると,11件がヒットしている.

    D:\XoopsCore25\htdocs\class\database\mysqldatabase.php(463):
    D:\XoopsCore25\htdocs\class\model\sync.php(69):
    D:\XoopsCore25\htdocs\Frameworks\art\functions.php(48):
    D:\XoopsCore25\htdocs\Frameworks\art\object.php(91):
    D:\XoopsCore25\htdocs\modules\system\js\code_mirror\tokenizephp.js(410):
    D:\XoopsCore25\htdocs\modules\system\themes\default\default.php(74):
    D:\XoopsCore25\htdocs\modules\system\themes\transition\transition.php(108):
    D:\XoopsCore25\htdocs\modules\system\themes\zetadigme\zetadigme.php(115):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-admin\includes\class-wp-site-health.php(159):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(3619):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\js\codemirror\codemirror.min.js(27):

    ファイルごとに比較しておこう.左がmysql_get_server_infoの出現,右がmysqli_get_server_infoだ.

    tokenizephp.js(392) ― tokenizephp.js(410)
    index.php(175, 249): ― 
    oninstall.php(92) ― 
    class-wp-site-health.php(162) ― class-wp-site-health.php(159)
    wp-db.php(3621) ― wp-db.php(3619)
    codemirror.min.js(27) ― codemirror.min.js(27)
    ― mysqldatabase.php(463),sync.php(69),functions.php(48),object.php(91),default.php(74),transition.php(108),zetadigme.php(115)

    これで見ると,おそらく修正を要するのはindex.php(175, 249)とoninstall.php(92)だけではないかと思われる.これらを修正したが,まだエラーは発生している.

    Warning: Use of undefined constant XOOPS_PATH – assumed ‘XOOPS_PATH’ (this will throw an Error in a future version of PHP) in D:\XoopsCore25\htdocs\modules\wordpress\class\config_from_xoops.class.php(56) : eval()’d code on line 1

    データベース接続確立エラー

    XOOPS_PATHは以下の13箇所で参照されている.

    D:\XoopsCore25\htdocs\admin.php(68):
    D:\XoopsCore25\htdocs\admin.php(69):
    D:\XoopsCore25\htdocs\image.php(248):
    D:\XoopsCore25\htdocs\mainfile.dist.php(26):
    D:\XoopsCore25\htdocs\mainfile.dist.php(29):
    D:\XoopsCore25\htdocs\mainfile.dist.php(30):
    D:\XoopsCore25\htdocs\mainfile.php(26):
    D:\XoopsCore25\htdocs\mainfile.php(29):
    D:\XoopsCore25\htdocs\mainfile.php(30):
    D:\XoopsCore25\htdocs\class\xoopskernel.php(35):
    D:\XoopsCore25\htdocs\class\xoopskernel.php(38):
    D:\XoopsCore25\htdocs\class\logger\xoopslogger.php(202):
    D:\XoopsCore25\htdocs\class\smarty\xoops_plugins\modifier.truncateHtml.php(33):

    いや,おかしい.XOOPS_PATHはmainfile.phpで定義されている.上記config_from_xoops.class.php(56) の56行というのは下記関数でevalを呼び出しているところに該当する.

    function xpress_eval($str){
        $eval_str = ‘$ret = ‘ . $str . ‘ ;’;
        eval($eval_str);
        return $ret;
    }

    Debug mode がいつの間にかオフになっていた.
    Error : Error: Call to undefined function mysqil_get_server_info()

    どこかでミスタイプしたのだろうか?mysqliがmysqilになっている.⇒index.phpでミスっていた.⇒これを修正してほぼ動作するようになったが,まだModules→WordPress blog→WordPress Adminでエラーが起きている.

    Warning: Use of undefined constant XOOPS_PATH – assumed ‘XOOPS_PATH’ (this will throw an Error in a future version of PHP) in D:\XoopsCore25\htdocs\modules\wordpress\class\config_from_xoops.class.php(56) : eval()’d code on line 1
    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php:17 Stack trace: #0 D:\XoopsCore25\htdocs\modules\wordpress\include\add_xpress_process.php(202): xpress_set_memory_limmit() #1 D:\XoopsCore25\htdocs\modules\wordpress\wp-config.php(85): require_once(‘D:\\XoopsCore25\\…’) #2 D:\XoopsCore25\htdocs\modules\wordpress\wp-load.php(37): require_once(‘D:\\XoopsCore25\\…’) #3 D:\XoopsCore25\htdocs\modules\wordpress\wp-admin\admin.php(34): require_once(‘D:\\XoopsCore25\\…’) #4 D:\XoopsCore25\htdocs\modules\wordpress\wp-admin\index.php(10): require_once(‘D:\\XoopsCore25\\…’) #5 {main} thrown in D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php on line 17

    mysql_connectという関数が未定義というエラーだ.Updateは可能なようだが,もっと新しいバージョンがあるだろうか?WPの現在のバージョンは5.3.2だ.⇒やってみれば分かるだろう.⇒Updateされた.Versionは2.36.これはXPressMeのバージョンのことではないだろうか?動作は同じだ.memory_limit.phpでエラーが発生しているようだが,スタックオーバーフローでなければよいが…mysql_connectという関数もPHP7では使えなくなっている.以下の11箇所で参照されている.

    D:\XoopsCore25\htdocs\modules\system\class\thumbs\phpThumb.php(328):
    D:\XoopsCore25\htdocs\modules\system\class\thumbs\phpThumb.php(329):
    D:\XoopsCore25\htdocs\modules\system\class\thumbs\phpThumb.php(338):
    D:\XoopsCore25\htdocs\modules\system\js\code_mirror\tokenizephp.js(379):
    D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php(17):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(783):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(1654):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(1665):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(1668):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(1728):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\js\codemirror\codemirror.min.js(27):

    mysqli_connectの出現も見ておこう.⇒7件あった.

    D:\XoopsCore25\htdocs\install_remove_17115613625e6a78cfd2306\page_dbsettings.php(37):
    D:\XoopsCore25\htdocs\install_remove_17115613625e6a78cfd2306\page_modcheck.php(62):
    D:\XoopsCore25\htdocs\modules\system\class\thumbs\phpThumb.php(291):
    D:\XoopsCore25\htdocs\modules\system\js\code_mirror\tokenizephp.js(398):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-admin\includes\class-wp-site-health.php(851):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(614):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\js\codemirror\codemirror.min.js(27):

    mysql_connectとmysqli_connectの出現位置を比較してみる.

    phpThumb.php(328, 329, 338) ― phpThumb.php(291):
    tokenizephp.js(379) ―  tokenizephp.js(398)
    memory_limit.php(17) ― 
    wp-db.php(783, 1654, 1665, 1668, 1728,) ― wp-db.php(614)
    codemirror.min.js(27) ― codemirror.min.js(27)
    ― page_dbsettings.php(37),page_modcheck.php(62),class-wp-site-health.php(851)

    上記エラーの直接の原因はmemory_limit.php(17)だが,wp-db.phpにも5箇所の出現がある.しかし,このファイルにはmysqli_connectを呼び出している箇所もあるので,様子を見ることにしよう.⇒対処したが,別のエラーが出てきた.今度はmysql_closeだ.今後はWordPressの中だけをチェックすることにする.というか,WordPressでmysqliの使用を強制するということはできないのだろうか?WPのSystem informationではMySQL Versionは不明となっている.WP内におけるmysql_closeの出現は以下の3箇所だ.

    D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php(59):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(3477):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\js\codemirror\codemirror.min.js(27):

    一方,mysqli_closeは以下の2箇所に出現している.

    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\wp-db.php(3475):
    D:\XoopsCore25\htdocs\modules\wordpress\wp-includes\js\codemirror\codemirror.min.js(27):

    memory_limit.php(59)だけを修正しておこう.⇒これでCall to undefined functionエラーは解消したが,データベースには接続できていない.多分それとは独立に警告3件が発生している.

    Warning: Use of undefined constant XOOPS_PATH – assumed ‘XOOPS_PATH’ (this will throw an Error in a future version of PHP) in D:\XoopsCore25\htdocs\modules\wordpress\class\config_from_xoops.class.php(56) : eval()’d code on line 1
    Warning: mysqli_connect(): (HY000/1045): Access denied for user ”@’localhost’ (using password: NO) in D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php on line 18
    Warning: mysqli_close() expects parameter 1 to be mysqli, bool given in D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php on line 60

    データベース接続確立エラー

    これは、wp-config.php ファイルのユーザー名とパスワードが正しくないか、あるいは のデータベースサーバーに接続できないかのどちらかを意味します。ホスティングサービスのデータベースサーバーがダウンしているかもしれません。ユーザー名とパスワードに間違いはありませんか ? 正しいホスト名を入力しましたか ? データベースサーバーは稼働していますか ?

    wp-config.phpを見てみよう.このファイルではすべてのデータベース設定を$xoops_configから取り出している.WPのSystem information→Set value that XPressME acquired from XOOPSを見ると,XOOPS setting valueは正しく表示されているが,xoops_config get valueはXOOPS_ROOT_PATH, XOOPS_TRUST_PATH, XOOPS_URL以外についてはすべて空欄になっている.この中にはXOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS, XOOPS_DB_NAME, XOOPS_DB_PREFIXが含まれる.

    おかしい.開発機からネットに接続できなくなってしまった.WiFiルータは接続済になっているのだが…⇒切断→再接続で復活した.$xoops_configというのはWordPress内で通用している変数だ.暫定的にwp-config.phpの中で固定値を設定するようにしてみよう.動き初めた.XPressMeのデータベース名はXOOPSのデータベース名と一致している必要があるようだ.以下の警告が出ている.

    Warning: Use of undefined constant XOOPS_PATH – assumed ‘XOOPS_PATH’ (this will throw an Error in a future version of PHP) in D:\XoopsCore25\htdocs\modules\wordpress\class\config_from_xoops.class.php(56) : eval()’d code on line 1
    Warning: mysqli_connect(): (HY000/1045): Access denied for user ”@’localhost’ (using password: NO) in D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php on line 18
    Warning: mysqli_close() expects parameter 1 to be mysqli, bool given in D:\XoopsCore25\htdocs\modules\wordpress\include\memory_limit.php on line 60

    image

    この画面は「WordPressをインストール」となっている.もう一度インストールする必要があるのだろうか?ともかくWordPressのダッシュボードが開いた.⇒新規投稿でエラーが出てしまった.かなり幸先が悪い出発だ.3つの警告の上にParse errorが出ている.

    Parse error: syntax error, unexpected ‘&’, expecting ‘)’ in D:\XoopsCore25\htdocs\modules\wordpress\include\xpress_block_render.php on line 37

    テーマのカスタマイズなどでも同様のエラーが発生する.これを解決できなかったら使い物にならない…37行目の内容は

    $ans = mb_convert_variables(‘UTF-8’ , ‘EUC-JP’, &$xml_data); //EUC-JP to UTF-8

    mb_convert_variablesは第3引数のテキストなどを第1引数のエンコードに変換するものだ.

    mb_convert_variables ( string $to_encoding , mixed $from_encoding , mixed &$vars [, mixed &$... ] ) : string

    しかし,上のエラーメッセージを見ると

    mb_convert_variables ( string $to_encoding , mixed &$vars [, mixed &$... ] ) : string

    のような仕様になっていることを想定しているように思われる.しかし,そのような変種は見当たらない.このエラーもPHPのバージョンに関係しているようだ.暫定的にこの呼び出しを止めておくことにしよう.(XOOPS25の環境では入出力のすべてでUTF-8が使われているからコード変換は不要と仮定する)mb_convert_variablesは以下の4箇所で使われている.

    D:\XoopsCore25\htdocs\modules\wordpress\include\xpress_block_header.php(37):
    D:\XoopsCore25\htdocs\modules\wordpress\include\xpress_block_header.php(39):
    D:\XoopsCore25\htdocs\modules\wordpress\include\xpress_block_render.php(37):
    D:\XoopsCore25\htdocs\modules\wordpress\include\xpress_block_render.php(39):

    4箇所をすべてコメントアウトしてこのエラーは解消したが,まだエラーは続く.

    Parse error: syntax error, unexpected ‘new’ (T_NEW) in D:\XoopsCore25\htdocs\modules\wordpress\include\xpress_block_render.php on line 174

    174行目は

    $tpl =& new XoopsTpl() ;

    となっている.参照の&を外したらエラーは解消したが,まだ出てくる.

    Parse error: syntax error, unexpected ‘new’ (T_NEW) in D:\XoopsCore25\htdocs\modules\wordpress\include\xml.php on line 18

    xml.phpの18行目は

    $xml_parser = &new xpress_XML();

    となっているので,上と同様&を取り除いたら動作するようになった.警告は出ているが,ブロックエディタ画面に入れた.

    image

    これらのエラーについては以下に説明がある.

    下位互換性のない変更点→下位互換性のないその他の変更
    https://www.php.net/manual/ja/migration70.incompatible.php

    新しいオブジェクトを参照渡しで代入できない
    new 文の結果を参照渡しで変数に代入することができなくなりました。

    従って,PHP7では「&new」はすべて構文エラーになると考えられる.検索するとJSを除外して,4ファイル見つかった.

    D:\XoopsCore25\htdocs\modules\wordpress\include\xml.php(18):
    D:\XoopsCore25\xoops_lib\libs\altsys\include\Text_Diff.php(38, 40, 59, 282. …,840):
    D:\XoopsCore25\xoops_lib\libs\altsys\include\Text_Diff_Renderer.php(86. 102):
    D:\XoopsCore25\xoops_lib\libs\altsys\include\Text_Diff_Renderer_inline.php(119, 123):

    修正しておこう.Text_Diff.phpは個数が多いのでファイルのバックアップを取って一括変換しておく.警告は山のように出ているが,エラーは発生しなくなったようだ.警告に関しては後日調べることにして,一旦デバッグモードを止めて動作をチェックしてみよう.⇒XOOPSのデバッグモードを止めてもWordPressの警告は止まらない.

    「XPressME Integration Kit Version 2.54 が利用可能です」という通知が入っているのでUpdateしてみよう.⇒以下のリンクで403エラーになった.

    http://ja.xpressme.info/wp-content/plugins/download-monitor/download.php?id=142

    WordPressの設定では特にデバッグモードというのは見当たらなかった.XOOPSでデバッグモードをSmartyに変えてもWordPressのエラー表示は変化しない.新規投稿→公開でエラーになった.

    公開に失敗しました。 エラーメッセージ: 返答が正しい JSON レスポンスではありません。

    非公開で投稿でも同じエラーになる.また,パスワード保護というオプションが選択できない.⇒非公開で保存されているようだ.エラーは出ているがXOOPSのトップページに表示されている.いや,XOOPSのトップではなくWordPressのトップページだ.しかし,メニュー類はXOOPSのものが出ている.テーマを切り替えても画面がまったく変化しない.WordPressのバージョンは5.3.2だが,これは古いのか新しいのか?ロリポ!で提供しているWordPressのバージョンも5.3.2だから最新と考えてよい.ロリポ!のブログには以下のプラグインが導入されている.○は現在使用中のもの

    1. Akismet Anti-Spam ○
    2. Classic Editor ○
    3. Count Per Day ○
    4. Hello Dolly
    5. SiteGuard WP Plugin ○
    6. WP Multibyte Patch ○

    wp-config.php 等の定義ファイルにおいて WP_DEBUG 定数を真と定義することにより、WordPress を「デバッグモード」で動作させることができます。

    とあったので,wp-config.phpで明示的に偽に設定してみたが,動作には変化なかった.XPressMeではブログ管理人の写真はアップしていないが,WordPressは覚えているようで,画面上部の「こんにちは,babalaboさん」には顔写真が出てくる.しかし,どうやって突き合わせているのだろう?ユーザ名は同じだが,パスワードは異なるものを使っている.メールアドレスで判定しているのだろうか?ロリポップのPHPは7.3(モジュール版),こちらのxampp7のPHPは7.4.2だ.この差が現れているのだろうか?だとすれば,xampp7のPHPが新し過ぎるということになるのだが…PHP7.3を導入して動作をチェックしてみたい…一応WordPressは動くようになったので一度バックアップを取って先に進むことにしよう.

    XoopsCore25とMySQL→xoops25だけをバックアップしておくことにする.⇒おかしい.またエクスポートに失敗している.いや,多分これはmax_sizeの問題だろう.WordPressでは確か,MAXを512MBとしていたような気がするので,PHP.iniで3つの定数をすべて400MBに設定しておくことにする.WordPressではなく,memory_limitが512MBだ.これにupload_max_filesizeとpost_max_sizeを合わせることにしよう.ダメだ.まだ保存できない.何か他にやることがあったろうか?⇒dbのインデックス不整合というエラーが出たので,mysql→dbテーブルの修復を実行した.

    以前にもエキスポートでエラーが出ているが,そのときにはエラーメッセージがHTML形式で表示されている.どこでどのようにしたらエラーが表示できるようになるのだろう?これはMySQLの動作なのでXOOPSのデバッグモードは関係ないはずだ.このログではUtil.phpの1617行目の書き換えを実施している.⇒エクスポートできるようになった.

    685KBであまり大きなファイルではない.さて,atlsysが残っているのだが,どうしたものだろう?PHPエラーもある程度飲み込めたのでもう一度チャレンジしてみたい.libs/atlsysの中のPHPにも修正が入っているので今度は通る可能性がある.⇒だめだ.

    Error : ParseError: syntax error, unexpected ‘new’ (T_NEW)

    だるまが出てしまうのでエラーの詳細が分からない.Errors()にエラーが入っている.

    Unknown: filter_var(): FILTER_SANITIZE_MAGIC_QUOTES is deprecated, use FILTER_SANITIZE_ADD_SLASHES instead in file /modules/system/include/functions.php line 36

    FILTER_SANITIZE_MAGIC_QUOTES が使われているのはこの場所だけだ.この修正でErrors(0)になったが,atlsysのインストールでだるまになる状況は変わらない. /xoops_trust_path/libs/altsys/include/altsys_functions.phpをextras/のファイルからオリジナルに戻してみた.インストールすると以下のエラーが出る.

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

    oninstall.phpの39行目は

    $sqlutil =& new OldSqlUtility ;

    となっている.これは上記の「新しいオブジェクトを参照渡しで代入できない」という話の続きだろう.このような表記はほとんどlig/altsys内の関数だが,wordpressが2件,protectorが3件ある.全25箇所.この際だから片付けておくことにしよう.⇒!やった!altsysがインストールできた.これでpicoもインストールできるかもしれない.⇒altsysのインストールには成功しているが,そのあと管理画面に戻るところでだるまになり,大量のエラーが発生.

    Errors

    Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; AltsysBreadcrumbs has a deprecated constructor in file D:/XoopsCore25/xoops_lib/libs/altsys/class/AltsysBreadcrumbs.class.php line 4

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/index.php line 7

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/index.php line 8

    Unknown: Non-static method AltsysBreadcrumbs::getInstance() should not be called statically in file D:/XoopsCore25/xoops_lib/libs/altsys/index.php line 14

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/index.php line 28

    Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; XoopsGTicket has a deprecated constructor in file D:/XoopsCore25/xoops_lib/libs/altsys/include/gtickets.php line 7

    Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; MyXoopsGroupPermForm has a deprecated constructor in file D:/XoopsCore25/xoops_lib/libs/altsys/include/mygrouppermform.php line 49

    Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; MyXoopsGroupFormCheckBox has a deprecated constructor in file D:/XoopsCore25/xoops_lib/libs/altsys/include/mygrouppermform.php line 224

    Warning: Use of undefined constant ALTSYS_CORE_TYPE_XCL21 – assumed ‘ALTSYS_CORE_TYPE_XCL21’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/myblocksadmin.php line 24

    Warning: Use of undefined constant ALTSYS_CORE_TYPE_ICMS – assumed ‘ALTSYS_CORE_TYPE_ICMS’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/myblocksadmin.php line 28

    Unknown: Non-static method MyBlocksAdminForX20S::getInstance() should not be called statically in file D:/XoopsCore25/xoops_lib/libs/altsys/myblocksadmin.php line 35

    Unknown: Non-static method Database::getInstance() should not be called statically in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 23

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 23

    Warning: Use of undefined constant _AM_SBLEFT – assumed ‘_AM_SBLEFT’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 21

    Warning: Use of undefined constant _AM_SBRIGHT – assumed ‘_AM_SBRIGHT’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 22

    Warning: Use of undefined constant _AM_CBLEFT – assumed ‘_AM_CBLEFT’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 23

    Warning: Use of undefined constant _AM_CBRIGHT – assumed ‘_AM_CBRIGHT’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 24

    Warning: Use of undefined constant _AM_CBCENTER – assumed ‘_AM_CBCENTER’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 25

    Warning: Use of undefined constant _AM_CBBOTTOMLEFT – assumed ‘_AM_CBBOTTOMLEFT’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 26

    Warning: Use of undefined constant _AM_CBBOTTOMRIGHT – assumed ‘_AM_CBBOTTOMRIGHT’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 27

    Warning: Use of undefined constant _AM_CBBOTTOM – assumed ‘_AM_CBBOTTOM’ (this will throw an Error in a future version of PHP) in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdminForX20S.class.php line 28

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 73

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 74

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 75

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 85

    Notice: Only variables should be assigned by reference in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 88

    Unknown: Non-static method AltsysBreadcrumbs::getInstance() should not be called statically in file D:/XoopsCore25/xoops_lib/libs/altsys/class/MyBlocksAdmin.class.php line 98

    Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; D3Tpl has a deprecated constructor in file D:/XoopsCore25/xoops_lib/libs/altsys/class/D3Tpl.class.php line 6

    Error: Error: Call to undefined method XoopsTpl::XoopsTpl() in file D:/XoopsCore25/xoops_lib/libs/altsys/class/D3Tpl.class.php line 9

    最後のエラーを見てみよう.D3Tpl.class.php line 9は

    parent::XoopsTpl() ;

    & newがまだ残っていた.なぜだろう?picoで追加されたものだ.一部はすでに修正されたものもあるが,全124箇所あった.⇒すべて書き換えた.⇒picoのインストールに成功した.しかし,管理画面に戻るところでFatal Errorが出た.

    Fatal error: Cannot make static method MyTextSanitizer::getInstance() non static in class PicoTextSanitizer in D:\XoopsCore25\xoops_lib\modules\pico\class\pico.textsanitizer.php on line 14

    これを含めてエラーは13個発生している.pico.textsanitizer.php on line 14 は関数名の部分で,この関数は上位クラスのMyTextSanitizer値を返している.

    function PicoTextSanitizer()
    {
        parent::MyTextSanitizer() ;
    }

    一応上記の修正でpicoはインストールされて,インストール済モジュールは7個になったが,altsysにはMenuというところで❌が付いている.これはどういうことだろう?❌をクリックしたら☑」に戻った.SUBMITボタンを押して,以下のエラーが出ている.

    Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; D3LanguageManager has a deprecated constructor in file D:/XoopsCore25/xoops_lib/libs/altsys/class/D3LanguageManager.class.php line 3

    Unknown: Non-static method D3LanguageManager::getInstance() should not be called statically in file D:/XoopsCore25/xoops_lib/modules/pico/xoops_version.php line 7

    これらのエラーはXOOPSで構築されたサイトでは恒例のようになっている.

    pico/xoops_version.php line 7は

    $langman =& D3LanguageManager::getInstance() ;

    これは「非 static メソッドに対する static 呼び出し」禁止という規則だ.今の場合,getInstanceが非静的メソッド,D3LanguageManagerはクラス名なのでD3LanguageManager::getInstance() は静的呼び出しになる.

    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とするとエラーになってしまう.

    XOOPS最新版にモジュールインストールを試みて失敗

    本家XOOPSから最新版をダウンロードしてインストールした.完璧に動作している.今までの苦労はなんだったのか?という感じだ.XOOPS Cube つまり,日本語XOOPSはほぼ完全に終わってしまっている.あるいは,もしかしたら潰されたのかもしれない…ともかくXOOPSはまだ根強く活きているからユーザ会サイト復活のチャンスは十分あると考えてよい.

    さて,今後の進め方を考えてみよう.できれば古いxamppとXOOPSの組み合わせを並行して実行できるようにしておきたい.xamppではポート80と3306を使っているので,この部分だけを切り替えれば2つのアパッチを同時に走らせることは可能なのではないか?localhostでアクセスするようになっているがこれも単なる文字列のはずだから,何か別の名前を与えることはできるはずだ.XoopsCore25 の画面はXOOPS Cubeとはかなり違う上に英語版ときているので慣れるまでにはかなり掛かりそうだが,機能的にはそれほど大きな違いはないはずだから,2つを対照・比較することができれば使い方を習熟する上でも有効だ.

    難関はXoopsCore25の上にユーザ会サイトバックアップのデータベースイメージをインポートする部分だが,前に古いバージョンで成功しているのでその手順を参考にすれば何とかなるのではないかと思う.今後ということもあるので,できるだけ簡便な操作でモジュールとデータベースの相互関係を再構築する手順を確立したい.モジュールの導入とデータベースデータの流し込みのどちらを先に実行すべきか?というのが問題だ.

    前回はパッケージの中にモジュールがすでに入っていてXOOPSを立ち上げたときにはそれらはすでにインストール済の状態になっていたのではないだろうか?この辺りの詳細手順は一度ログを読み直して再確認した方がよい.ともかく,まず始業時バックアップから開始することにしよう.xampp7とXoopsCore25をバックアップした.MySQLも取っておこう.このSQLはXoopsCore25のフォルダに入れておく.⇒ダメだ.エクスポートに失敗している.

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

    このエラーも前に見たことがある.全選択しているが,選択肢は①mysql, ②test,③oa00090878_babalaboしかない.oa00090878_babalaboだけをエキスポートするようにしてみたが結果は同じだ.これはかなりまずいと思う.これまでエキスポートで失敗したという経験はない.障害はlocalisedDataの中で発生している.以下のリンクに回答がある.

    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);」に書き換える。

    だけだ.この修正は前にも一度やったことがある.というか,その修正は残っているが,上の説明は間違っている.それよりも上に書かれている「strftime()ではなくdate()に書き換えるべきである」というのが正しいように思われるので,以下のように暫定修正した.

    // $ret = strftime($date, (int) $timestamp);
    $ret = date(‘Y-m-d H:i:s’, (int) $timestamp);

    これで問題なくエキスポートできるようになった.現状でもxamppとXOOOPSは単純に起動すれば動作するようになっている.ただし,xampp7を並列実行すると下記のエラーになる.

    20:15:43  [Apache]     Problem detected!
    20:15:43  [Apache]     Port 80 in use by “C:\xampp\apache\bin\apache.exe” with PID 17032!
    20:15:43  [Apache]     Apache WILL NOT start without the configured ports free!
    20:15:43  [Apache]     You need to uninstall/disable/reconfigure the blocking application
    20:15:43  [Apache]     or reconfigure Apache and the Control Panel to listen on a different port
    20:15:43  [Apache]     Problem detected!
    20:15:43  [Apache]     Port 443 in use by “C:\xampp\apache\bin\apache.exe” with PID 17032!
    20:15:43  [Apache]     Apache WILL NOT start without the configured ports free!
    20:15:43  [Apache]     You need to uninstall/disable/reconfigure the blocking application
    20:15:43  [Apache]     or reconfigure Apache and the Control Panel to listen on a different port
    20:15:43  [mysql]     Problem detected!
    20:15:43  [mysql]     Port 3306 in use by “C:\xampp\mysql\bin\mysqld.exe”!
    20:15:43  [mysql]     MySQL WILL NOT start without the configured ports free!
    20:15:43  [mysql]     You need to uninstall/disable/reconfigure the blocking application
    20:15:43  [mysql]     or reconfigure MySQL and the Control Panel to listen on a different port

    Port 80, 443, 3306がすでに使われているというエラーだ.どう回避すればよいのか?xampp7には構成を変更するためのツールが付いているのでこちらで対応することにする.それぞれ80→81,443→444,3306→3307に変更しておいた.localhostではXOOPSが開く.localhostはApacheだけではなく,MySQLやXOOPSの内部でも使われている.ただし,MySQLのlocalhostというのは少し意味が違うような気がする.つまり,MySQL自体をlocalhostと呼んでいるように思われる.いや,localhost:81で呼び分けることができるかもしれない.いや,そういう構文は通らない.

    httpd.confでServerName localhost:80→ServerName localhost:81と変えて見たが,xampp7のコントロールパネルのApache→Admin,MySQL→Adminのボタンでどちらもlocalhost:81にアクセスしようとしてこのサイトに「アクセスできません」となる.

    1つのPC(サーバー)で複数のApacheをインストールして利用する方法
    http://algorhythnn.jp/blg/2013/10/29/multi-apache-one-pc/

    によると,「NICに対して複数のIPアドレスを割り当てて,IPアドレスでアクセスする」ということのようだ.このためにはIPアドレスを固定しなくてはならない.IPアドレスが決まれば,hostsでその値を設定して名前で呼び出すこともできる.ポートで呼び分けることができるのならその方が早いのではないか?xampp7の方はポート番号を切り替えただけで動作するようになった.httpd.confで以下の修正を行った.

    • ServerName localhost:81
    • Listen 81

    しかし,今度はxamppのApacheが起動できなくなった.xamppを先に起動すると今度はxampp7のApacheが走らなくなる.さっきはうまく行ったのだが…⇒上記のような記事もあるので不可能ではないと思われるが,結構難しそうなところもあるのでこの件は後回しということにしよう.必要ならば個別に起動することはできるし,場合によっては別のマシンに移植して独立の環境を与えることもできるだろう.

    完全に復旧したつもりだが,phpMyAdminが起動できない.⇒localhost/phpMyAdminではxampp7/htdocs/phpMyAdminを参照している.しかし,上の修正を行った時点ではxampp7/phpMyAdminを見ていたはずなのだが…いや,どうもその両方が参照されているようだ.アドレスはどちらもlocalhost/phpmyadminとなっているが,コントロールパネルから起動するときはxampp7/phpMyAdminを見ているように思われる.つまり,どちらも必要ということになる.どちらかにリダイレクトすればよいのかもしれないが…

    xamppのコントロールパネルでAdminをクリックするとWinMySQLadminが立ち上がってくるが,むしろphpMyAdminが開いた方がありがたいので変えておこう.⇒PHPを修正する必要がある.WinMySQLadminはEXEとしてインストールされている…⇒見送り.

    さて,いよいよXoopsCore25へのデータ移植だが,どうやって進めればよいだろう?せめて,比較のためにphpMyAdminで2つのデータベースを開いて比較できるようにできればよいのだが…テーブルに別の名前を付けて読み込んでおくという手があるのではないか?既存DBには150個もテーブルが入っている.新規DBには34個しかない.これを完全にすり合わせるのはかなり困難と思われるが,やるしかない.xoopsの構成はmainfile.phpで決定されるので,これを切り替えながら2つのDBを開けるようにするということが考えられる.まず,そういう仕組を作ってみることにしよう.既存DBテーブルをxoopsの名前で読み込んでみる.

    このSQLはバックアップのどこかのフォルダに入っているはずだが,現物をXOOPSから取り出すことにしよう.⇒エクスポートは完了したようだが,応答がない.画面が真っ白になっている.どうもどこかで失敗したような気配だ.ダウンロードに入っていない.かなりまずい.どこかにログがあるだろうか?⇒テキストを開くというオプションでlocalhost.odtというファイルがダウンロードされた.⇒エラーが発生している.

    <br />
    <b>Fatal error</b>:  Allowed memory size of 209715200 bytes exhausted (tried to allocate 167656235 bytes) in <b>C:\xampp\phpMyAdmin\libraries\zip.lib.php</b> on line <b>112</b><br />

    max=209715200のとき,それより小さい167656235のメモリを確保できないということはどういうことだろう?zip.lib.phpが呼び出されているということは圧縮しようとしていたのだろうか?ファイルに保存するで圧縮なしを指定しているのだが…209715200 byte =204,800KB=200MB,167656235Byte=163,727KBだ.設定を調べてみよう.それにしてもなぜこんなに大きくなってしまうのだろう?このDBにはまだWPのデータは入っていない.いや,入っている.2回に分けていれているはずだが,全部入ったのだろうか?最後の記事は2012/03/12投稿だ.

    源氏4の完全木テストとパックマン全点をPCで並行して走らせておいたのだが,完全木テストの方は5726面:12時間12分21秒で完了していた.パックマンの方でエラーが起きて停止している.基準ノードは#6で#292辺りでエラーになっているようだ.&rArr;どうも少し現象が違うように思われる.

    この記事はどこかで見たような記憶がある.まだWPは動いていないはずなのだが…いや,前は動いていた.何かの理由でパスワードが必要になったのではないか?ログインして見えるようになった.確かに最後までロードされているようだ.200MBというのはPHPに設定した最大値と思われる.メモリ上限も同じ値になっているはずだ.phpMyAdminには別の制限値があるのだろうか?⇒テーブルキャッシュサイズというのがあるようだ.tmp_table_size,max_heap_table_sizeというのがある.phpMyAdminはconfig.inc.phpで設定しているが,この中にはないので,mysql/my.cnfかもしれない.⇒max_allowed_packet=16M という設定しかない.tmp_table_sizeというリテラルはmysql, phpのどこにも現れない.my.cnfに以下を追記してみた.

    max_heap_table_size=200MB
    tmp_table_size=200MB

    動作は変化しない.PHP.iniでupload_max_filesize = 200Mにしたが変化しない.書き込みしたPHP.iniの場所が悪い.xamppではApacheの下のPHP.iniを見ている.⇒ダメだった.xampp/htdocsを開いてphpinfo()で確認してみよう.upload_max_filesize,max_file_size, memory_limit のすべてが200MBに設定されている.設定位置はapache/bin/php.iniだ.これらの値を400MBに変えてみよう.⇒これでようやく通った.SQLで98,717KBだ.このファイルをxoopsの名前で読み込んでみよう.⇒今度はXoopsCore25のphpMyAdminが開けなくなった.

    XOOPS本体にはlocalhostでアクセスできる.これまではxampp7のコントロールパネルからMySQL→Adminで開いていたのだが…XoopsCore25/htdocsの下にはphpMyAdminは存在しない.xampp7/htdocsには存在する.Xoops25で画面が変わるたびにSmartyがポップアップしてくる.Preferences→System Options→General Settings→Debug modeでinline modeを選択してポップアップは出なくなったが,いつの間にか左サイドバーの画像ないし記事が消えてしまっている.この部分はログアウトしても更新されない部分だ.⇒この領域はlocal/phpMyAdminでエラーを表示したときの残影だ.

    localhost/phpMyAdminでエラーにはなるが,再描画で表示される.一度表示されるとそのあとはエラーにならない.もしかするとクッキーが残っていたため?とも考えられる.データベースの名前は変更できるので現在のデータベースをXOOPS25とリネームしておこう.多分自動的には変更されないので,mainfile.phpを書き換える必要もある.oa00090878_babalabo.sql 95MBをインポートしてphpMyAdminエラーが起きた.

    Incorrect format parameter

    ただし,データベースは読み込まれているようだ.いや,まったく読み込まれていない.information_schemaなどへの書き込みが含まれているのだろうか?いや,そもそも Create Databaseがないように見える.以下の2行を追加したが動作は変わらない.

    CREATE DATABASE IF NOT EXISTS `oa00090878_babalabo` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    USE `oa00090878_babalabo`;

    PHP.iniをチェックしておこう.xampp7/php/php.iniの設定は以下のようになっている.

    • memory_limit=512M
    • upload_max_filesize=40M
    • post_max_size=40M

    下の2つを256MBまで上げてみる.⇒インポート完了した.mainfile.phpの仕様が変わっている.データベースに関する登録がない.XOOPS_DB_NAMEなどがどこかに設定されていなくてはならないのだが…xoops_trust_path\xoops_data\data\secure.phpに移動している.⇒データベース名を変更してlocalhostでサイトをオープン.ユーザを一人追加した.すでに既存DBをアップロードしてあるので,XOOPSのDBを切り替えて何が起こるのかを見てみることにしよう.少し乱暴なのでここで一応バックアップを取っておく.⇒画面が真っ白になって何も見えなくなってしまった.inline debugが作動していないのだろうか?⇒後から入れたDBをXOOPSとリネームした.DBはXOOPS25に戻して正常動作するようになった.

    この状態を維持しながら,つまり動作可能な状態のまま少しづつ注入してゆくということは可能だろうか?いずれにしても必要になると考えられるから,最初に必要なモジュールの最新版を探してインストールするところから初めてみよう.その上で既存DBとの変分を見れば何をやればよいのかも少しは見えてくるのではないか?しかし,XOOPS DBで起動したとき何もエラーが出ないというのはまずいので,デバッグモードだけは設定しておきたい.いや,そもそも管理テーブルの構造自体変化してしまっているはずだから,テーブルを読み込むこと自体できていないのではないか?結局,新しい環境でテーブルを生成し,可能ならばそのフォーマットに合わせて旧データを手作業で改編・修正してゆくしかないのではないかと思う.

    その前に日本語化するということをやってみよう.言語パッケージはextrasに入れることになっていたのではないかと思う.HELPページのボトムにエラーなどの記録が表示されるところがある.DEPRECATEDが1件発生している.ただし,これはログインできなければ見ることはできない.XoopsLanguages-masterをダウンロードしてみた.かなり大きい.圧縮した状態で35.5MBある.⇒解凍してみたが,イメージとはかなり違うものだ.japaneseの場合,coreとmodulesが入っていて,coreには2.0.18~2.5.0の5つのフォルダがある.modulesには12個のmoduleが入っている.つまり,個別のモジュールごとに各国言語化をやっているというイメージだ.想像では各国言語辞書のようなものがあって,それを切り替えるだけで一発で言語が切り替えられるものかと思っていたのだが…あまり,おもしろくない.

    module部分はともかくcoreだけでも共通化できなかったものだろうか?XOOPS_Cubeは確かにそういう思想で作り込まれているのだが…その辺りで折り合いが着かなかったのかもしれない…WordPressなどはどうなっているのだろう?xlanguageというモジュールがある.あとで調べることにしよう.googlemapもある.以下のモジュールをダウンロードした.XOOPS MySQLをバックアップするbackupというモジュールもある.

    1. smartfaq
    2. tellafriend
    3. XpressMe
    4. Pico
    5. WebLinks
    6. Evennews Mailer
    7. Mantis Bug Tracker

    GitHubには最初の2つしかなかった.pico, xpressもなかった.⇒Module RepositoryにはPicoがあった.XpressMeはxpressの代わりになるのではないか?XOOPS Xのモジュールは流用できないだろうか?あそこには bulletin, cubeUtils, d3forum, mobile_templates, search, xpress, hypconf, happy_linuxがある.特にhypconfが使えるとケータイ出力ができる可能性がある.XOOPSの日本語サポートサイトではprotectorの使用を推奨しないとして,翻訳も実施しないことを明言している.これはどういうことだろう?

    ともかくダウンロードしたモジュールをインストールしてみよう.pmはXOOPS25に最初から入っている.tellafriendをインストールしてみよう.System Options > This Module Admin > Install module(2)をクリックすると,User ProfilerとTell a Friend が待っている.User Profilerでエラーが起きた.

    Unable to install profile. Error(s):
    Installing User Profile
    Specified key was too long; max key length is 1000 bytes

    Tell a Friendのインストールは成功した.modulesフォルダにコピーするとInstall moduleのページに自動的に現れる.smartfaq,EvenNews,mantis,Web Links,のインストールも成功.picoはhtmlの他にxoops_trust_pathを持っている.うまくゆくだろうか?⇒失敗.

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

    None All Errors (7) Deprecated (1) Queries (20) Blocks (0) Extra (2) Timers(5)

    Errors

    Unknown: filter_var(): FILTER_SANITIZE_MAGIC_QUOTES is deprecated, use FILTER_SANITIZE_ADD_SLASHES instead in file /modules/system/include/functions.php line 36

    Unknown: filter_var(): FILTER_SANITIZE_MAGIC_QUOTES is deprecated, use FILTER_SANITIZE_ADD_SLASHES instead in file /modules/system/include/functions.php line 36

    Unknown: Methods with the same name as their class will not be constructors in a future version of PHP; weblinks_menu has a deprecated constructor in file /modules/weblinks/class/weblinks_menu.php line 36

    Unknown: Non-static method weblinks_menu::getInstance() should not be called statically in file /modules/weblinks/xoops_version.php line 76

    Unknown: Non-static method Database::getInstance() should not be called statically in file /modules/weblinks/class/weblinks_menu.php line 56

    Notice: Only variables should be assigned by reference in file /modules/weblinks/class/weblinks_menu.php line 56

    Warning: require(D:/XoopsCore25/xoops_trust_path/xoops_lib/modules/pico/xoops_version.php): failed to open stream: No such file or directory in file /modules/pico/xoops_version.php line 9

    どうも失敗してしまったらしい.もう一度バックアップに戻ってやり直してみよう.⇒Tell a Friend は事前に入っていたので問題ないが,それ以外のSmartFAQ, EvenNews, Mantis, Web Links はUPDATEが必要というマークが付いている.しかし,実行するとエラーが発生する.必要なモジュールが実装されていないためだ.⇒ネットに接続していればUpdateできる.Updateは完了したが,エラーは残っている.

    Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for tellafriend Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for smartfaq Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for evennews Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for mantis Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!Module File for weblinks Not Found!

    やはりDBまで元に戻さないと修復不能なようだ.

    本家XOOPSの最新版が走るようになった!

    ユーザ会サイトはほぼ完璧に近い形で復元することができた.とは言え,ネット上で公開するためにはまだ大きな関門がある.現在のネット上のサーバーで走っているのはPHP7なので,xamppとXOOPSをアップデートしてPHP7で実行可能な環境を構築し,その上でサイトを運用できるようにしなくてはならない.xampp7はすでに稼働しているのでXOOPSの最新版を導入するだけのことだが,かなり手こずっている.XOOPSには2つバージョンがある.一つは公式版のXOOPS Cube,もう一つはそれにX-Updateを追加して機能強化したXOOPS Xディストリビューションだ.どちらもXOOPS Cube Legacyをベースにしているので基本的には同じと考えられるが,前者は2012年頃にベータ版を公開した状態で更新が止まっている.この意味ではXOOPS Xという選択しかないと思われるが,インストールの時点でエラーが発生したりなどあまり完成度は高くないような印象がある.

    XOOPS Xではエラーが発生するとそのタイミングで管理者パスワードを書き換えてそのアカウントをロックするような作りになっているように思われるが,エラーは頻発しているのでそのたびにパスワードの書き換えが必要になり,かなり使い勝手が悪い.X-Updateはモジュールの導入・更新を自動化するためのツールでこれが使えるとかなり便利になるような気もするが,常時ネットに接続しておかなくてはならないというのも不都合な点だ.もっともこの点に関しては従来のXOOPS Cubeでもアップデート情報などはネットから収集していたと推定されるので,大きな違いがあるという訳ではない.いずれにしてもこれを導入するためには自力でデバッグする覚悟がないとできないような気がする.実際,PHP7ではmysql系ではなくmysqli系の関数が使われるようになっているが,XOOPS Xの配布版の中にはいまだにmysql系への呼び出しが残っているように思われる.

    ユーザ会サイトを復活できなければそれはほとんど同時にゼルコバの木ユーザ会の解散を意味することになると考えられるから,この関門はどうしても突破しなくてはならないと思われるのだが果たして可能だろうか?ここまでたどり着くだけでもすでにかなりの時間を費やしている.下手をすると,ゼルコバの木ユーザ会の存続どころか,ゼルコバの木自体の倒壊にまで繋がりかねないという危機的な状況と言ってよいのではないか?実際,たとえばXOOPS Cubeという活動などはそのような事態の典型例と言ってよい.ともかく今はここに全力を注入して活路を切り開いてゆくより他はない.XOOPS Cube版でも不具合が噴出するという状態になっているので,選択肢としてはXOOPS Xを導入してそれを自力で作動するところまで持ち込むしかないと考えられる.場合によってはPHPのデバッグ環境まで必要となるかもしれないが,退路を断ち切って前に進むしかないだろう.まず,始業時バックアップから始めるとしよう.と言っても仕掛版は一旦廃棄なので単にリネームしておくだけということになる.

    いや,XOOPS Xの仕掛版は昨夜のうちにすでにリネームして廃棄状態になっているようだ.legacy-corepack_20180208が現在最新版のXOOPS Xだ.XOOPS Cubeのバージョンは2.2.xampp7は64ビット版でApache 2.4.41,MySQL 7.4.2,PHP 7.4.2,phpMyAdmin 5.0.1で走っている.PHP拡張はmysqli, curl, mbstringが入っている.OA00090878をデータベースユーザとして登録した.データベースサーバの種類はmysqli.データベーステーブルはすべて問題なく作成できた.管理者adminを登録する.これでインストール第1ステップは完了だ.第2ステップでXOOPS Cubeの必須モジュールが導入される.おそらくこの手順ではネット接続が不可欠と考えられるので開発機をネットに出すことになる(説明書きにはそのような記述はないが…).ここまでの手順で無数の警告が出力されているがすべて無視している.この時点で表示されている警告には以下がある.

    Deprecated: Function get_magic_quotes_runtime() is deprecated in D:\XOOPS X\html\install\class\textsanitizer.php on line 32

    Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; XCube_Root has a deprecated constructor in D:\XOOPS X\html\core\XCube_Root.class.php on line 37

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

    最後のWarningを除いて上記のDeprecatedメッセージは無数と言っていいくらい出ている.このステップでは画面は更新されずにエラーメッセージだけが表示された状態になっている.多分この画面は「戻る」かないし「再描画」で消える可能性はあるが,一応調べてみることにしよう.この障害の発生にはいろいろな原因があるようだが,可能性が高いのはスクリプトがUTF-8BOMで保存されているという可能性だ.⇒いや,「エラーメッセージ」が出力されるだけでこの障害は起きる.「HTTP ヘッダーを変更する関数より前の文で PHP の Warning や Notice エラーがある場合、それがすでにアウトプットされているため、このエラーが起きます。」つまり,構文的にはこの動作はノーマル動作ということになる.

    アウトプットバッファリング(出力制御)による回避という手がある.output_bufferingをphp.iniないし.htaccessで設定しておくとこの問題を回避できる.⇒xamppコントロールパネル→Config→PHP(php.ini)で設定変更したが動作は変わらない.xamppのダッシュボードを開いてチェックしてみたが,output_buffering=4096となっている.倍増して8192としてみたが変化なし.php.iniでerror_reportingやdisplay_errorsをオフにするという手もある.⇒php.iniではerror_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICTという設定になっている.この設定ならDeprecatedエラーは表示されないはずなのだが…display_errorsをオフにしても何の変化もない.PHP.iniのパスが通っていないのだろうか?前にどこかでApache/binにphp.iniが入っていたのを見た記憶がある.コピーしてみよう.⇒変化なし.

    error_reporting=E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

    のようにしても同じ.localhostでアクセスするとログイン画面になるが,「このサイトはただいまメンテナスです.後程お越しください.」が表示されている.PHP.iniの設定が動作にまったく反映されないというのはどういうことだろう?エラーが発生する画面を回避して,localhostを開くと[以下のモジュールが導入されていません]の画面に出る.

    image

    ここでもDeprecaedが多数出ているのでおそらく管理者パスワードは書き換えられているのだろう.いや,まだ壊れていなかった.画面を戻る,ようやくXOOPS Xのフラッシュ画面に出る.一応動作しているので,ここまでの不良には目をつぶって前に進むことにしよう.導入・アップデート管理のモジュールではインストール済モジュールとインストール可能なモジュールのテーブルが表示される.一括操作が可能なので必要なモジュール(recommenedを含む)をすべてインストールしておくことにする.

    • bulletin
    • cubeUtils
    • d3forum
    • mobile_templates(recommended)
    • pico
    • search
    • xpress
    • hypconf(recommended)
    • happy_linux
    • weblinks

    XOOPSに入っていてXOOPS Xに入っていないモジュールとしては以下がある.

    • changemail
    • dbtheme
    • download
    • evennews
    • extras
    • hdLegacy
    • iframe
    • legacyRender
    • mantis
    • pm
    • resendmail
    • resetuname
    • smartfaq
    • stdCache
    • tellafriend
    • user

    一括操作のためのチェックボックスは付いているが,操作できなかった.protectorはインストールできたが,messageはできなかった.個別インストールはできるのでやってみよう.xpressのインストールでは以下のエラーになる.

    お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; Bulletin has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletin.php line 10 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; relation has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\relation.php line 3 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; BulletinTopic has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletinTopic.php line 6 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; BulletinGP has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletingp.php line 2 (1)
    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:\XOOPS X\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:\XOOPS X\xoops_trust_path\modules\protector\class\ProtectorFilter.php line 35 (1)
    Deprecated [PHP]: Function get_magic_quotes_gpc() is deprecated in file D:\XOOPS X\html\core\XCube_HttpContext.class.php line 197 (2)
    Deprecated [PHP]: Function get_magic_quotes_gpc() is deprecated in file D:\XOOPS X\html\core\XCube_ActionForm.class.php line 309 (1)
    Deprecated [PHP]: Function get_magic_quotes_gpc() is deprecated in file D:\XOOPS X\html\class\module.textsanitizer.php line 238 (4)

    しかし,画面を戻るとインストールされているようだ.picoはインスールしているのに表示されない.アップデート可能なモジュールが4個ありますでlegacy, altsys, protector, xupdateをアップデートする.xupdateの更新ではエラーが出た.

    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; Bulletin has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletin.php line 10 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; relation has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\relation.php line 3 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; BulletinTopic has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletinTopic.php line 6 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; BulletinGP has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletingp.php line 2 (1)
    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:\XOOPS X\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:\XOOPS X\xoops_trust_path\modules\protector\class\ProtectorFilter.php line 35 (1)

    この後はlocalhostでもエラーが出るようになる.しかし,再描画で戻れた.アップデート可能なモジュールがまだ1個残っているが,このボタンを押すだけでエラーになってしまう.

    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; Bulletin has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletin.php line 10 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; relation has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\relation.php line 3 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; BulletinTopic has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletinTopic.php line 6 (1)
    Deprecated [PHP]: Methods with the same name as their class will not be constructors in a future version of PHP; BulletinGP has a deprecated constructor in file D:\XOOPS X\xoops_trust_path\modules\bulletin\class\bulletingp.php line 2 (1)
    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:\XOOPS X\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:\XOOPS X\xoops_trust_path\modules\protector\class\ProtectorFilter.php line 35 (1)

    しかし,Deprecated だけなので前に進めてもよいはずなのだが…この画面を再描画すると例のERROR TOO MANY REDIRECTが起こる.ネット上に次のような書き込みがあった.

    xampp最新版はPHP 5.3.0 になったようですが、XCLは現状PHP 5.2以下でないと正しく動作しないようです。少し古いバージョンをお試しください。

    この記事の投稿日付は2009/9/12なのでかなり古いが,XCLがPHPの上位バージョンに対応していないというのは事実であるような気がする.http://xoops.ryus.co.jp/modules/d3blog/details.php?bid=267 の記事を参考に

    error_reporting = E_ALL & ~E_DEPRECATED
    としたら警告は消えたような気がする.いや,まったく効いていない.
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED & ~E_STRICT & ~E_RECOVERABLE_ERROR
    としてみたが効果なし.このエディタのデフォルトフォントがいつの間にか変わってしまったのも使いづらい.デフォルトフォントを設定できるオプションが見つからない.
    エディタも壊れてしまったのだろうか?右端で折り返さなくなってしまった.どうも,何もかもが思ったように動かなくなってきているような気がする.

    どうも訳が分からない.今度はメイリオ9.6というのがデフォルトフォントになってしまった.しかも上の方の段落がすべて枠で囲まれたようになっている.HTMLのスタイルを見ると下図のようにグレーの帯が入っている.

    image

    どういうことなのだろう?何が起きているのかさっぱり分からない.開発機を外に出したのがまずかったのだろうか?2009/9/10の日付で「PHP5.3でXOOPSを動かす」という記事があったが,表紙画面を出すまでに相当苦労した様子が伺える.検索ツールの動作にも疑問がある.DEPLICATEDをxampp7で検索して,エクスプローラ,Meryともにヒットゼロだった.E_DEPLICATEDで検索するとエクスプローラは7ファイル,Meryは79箇所を検出した.単語単位の検索ではないのでDEPLICATEDでヒットゼロというのは腑に落ちない.エクスプローラはE_DEPLICATEDでは検出しているが,Meryと比較するとかなりの見落としがある.

    おかしい.今度はMeryがDEPLICATEDで7133個見つけて来た.何かミスっていたのだろうか?いずれにせよ,エクスプローラの検索がほとんど当てにならないことは確かだ.大文字のDEPLICATEDでは796個ヒットした.ファイル名で表示すると167本あった.PHPファイルに限定すると42本ある.これらのほとんどはphpMyAdminの中に入っている.それらを除くと以下の3本しかない.

    C:\xampp7\php\pear\PEAR\ErrorStack.php(373):
    C:\xampp7\php\pear\PEAR\Downloader\Package.php(220):
    C:\xampp7\php\pear\PEAR\Downloader\Package.php(236):

    ということはおそらくErrorStack.phpの動作と見てよいのではないだろうか?しかし,このファイルの中を検索してもDEPLICATEDという文字列は出てこない.いや,検索している文字列が違う.Passingというテキストを探した結果になっている.MeryでもDEPRECATEDはヒットゼロになる.E_DEPRECATEDなら見つかるという動作は同じだ.上記検索はスペルを間違えている.DEPLICATEDではなくDEPRECATEDだ.MeryではDEPRECATEDで7132,ファイルで7133本,PHPファイルで1486本検出された.Meryの検索ボックスを開くときテキストを選択しているとそれが検索対象となるので注意が必要だ.これらのファイルはほとんどphpMyAdminに入っている.phpフォルダに限定すると128箇所だ.これだけ本数があると,どこでメッセージを出しているかを突き止めるにはデバッガを使うしかないような気がする.いずれにしてもエラーメッセージを出力しているのはPHPと考えられるので問題はむしろxamppにあるということになりそうだ.まぁもちろん,XOOPSはDEPRECATEDを一掃すべきであることは当然だが…

    picoをX-Updateを使わないでインストールできるかどうか試してみよう.picoとmessageはダウンロードだけは済んでいるようだが,インストールで失敗している.DEPRECATEエラーが6件起きているが,エラーは発生していない.この動作はXOOPS Cube本体動作なので本体が対応していないために起きていると見るしかないだろう.XOOPS Cubeの開発は2012年頃にはストップしているので,PHPの新しいバージョンには対応していないものと見られる.それではXOOPSのユーザはどうやってそれに対応しているのだろう?古いバージョンのPHPをXOOPSの中に抱え込んで動作させるということは可能だろうか?いずれにしてもDeprecatedの警告が表示されないようにしない限りはどうにもならない…

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

    「現在公開されてる最新版のXOOPS X(ten)はPHP7でうごきますので特別何かする必要はありません。」とあるが,現在テストしているXOOPS Xは最新版のつもりなのだが…リリースは2018/02/08でXOOPS Cubeの公式サイトのダウンロードページの日付と同じ.2018年以降にリリースされたバージョンでこれより後のものはない.GitHubにもパッケージがあるが,日付から見ると2012年でかなり古い.XOOPSの管理画面で見ると Distribution : XOOPS X(ten) 20181220 XC Legacyバージョン : XOOPS Cube Legacy 2.2.3 Beta 1のようになっている.また,PHPの設定ではセーフモード : オフ,最大実行時間 : 120 sec.,メモリ制限 : 512Mb,表示エラー : オフ,ショートオープンタグ : オフ,ファイルをアップロード : オン ( アップロード最大ファイルサイズ:40M, Post最大サイズ:40M ),マジッククオート : オフ,グローバル変数の登録 : オフ,出力バッファリング : オン,open_basedir : オフ となっていて,PHP.iniの修正が反映しているように見える.

    PHPの設定を少し変更して再度localhostにアクセスしようとしたら以下のエラーになった.

    Protector detects site manipulation. 

    このエラーの対処法は http://xoops.ryus.co.jp/modules/d3blog/details.php?bid=378 にあるが,protector→一般設定で真っ白になってしまう.この記事の日付は2013年8月だ.この記事を書いているRYUSという会社のブログの更新も2018年12月頃で止まっている.どうもいよいよ終わりが近くなってきた雰囲気だ…XOOPS 2.5というのが存在する.本家XOOPSにはXOOPS 2.5.10 release 2019/04/29というのがある.これはPHP7.3 MySQL 8.0で動作する.language packageも提供されている.⇒ダウンロード→XoopsCore25としてインストール.こんな画面から始まる.

    image

    言語は英語しか選択できない.次の画面では以下の2つのフォルダをdocument root の外に置いてリネームしておくことを強く勧められる.①xoops_lib, ②xoops_data.このパッケージにはxoops_trust_pathというフォルダが存在しないが,これら2つのフォルダを外に置くことはそれと同等と言ってよいだろう.さらに,xoops_dataフォルダの中に7つの階層化したフォルダをあらかじめ作っておくことが求められる.⇒これらのフォルダはすでに作り込んである.xampp7に入っているのはMySQL 7.4.2だが,MySQL 8.0ではdefault-authentication-pluginmysql_native_password を設定することが求められる.

    Recommended extensions でチェックのついていない Iconv(Internationalization functions extension)というのがある.日本語サポートのために必要になりそうな気もするが,ここでは無視して進もう.xoops_dataとxoops_libを残しておいたらそれを使おうとしているようだ.⇒マニュアルで書き換えればよい.Databaseにはmysqlという選択肢しかない.データベース名はoa00090878_babalabo,データベースユーザはOA00090878,prefixはzelkova,characeter setはUTF-8 Unicode(utf8mb4),collationはutfmmb4_general_ci(Default)とした.SALTを設定するボックスはなかった.データベースを一旦削除.⇒すべてのテーブルの作成に失敗している!⇒最初に空のデータベースを作っておく必要があった.

    Wrote XOOPS GPL License Key: e6b4bb-a76f42-991dcd-0647fa-14a9b1

    Debug mode はデフォルトでオフになっている.デバッグモードには3種類ある.①inline, ②popup,③smarty.Smarty Templates Debugモードにしてみよう.これでデフォルトテーマの選択画面に入れた.

    image

    と言っても選択肢は3つしかない.うちグラフィックなテーマは上図だけだ.モジュールのインストレーション画面に出た.これまで何度も失敗しているところだ.①Private Messaging, ②User Profile,③Protector がインストールされる.すでにサイトは見えるようになっている.最後にSecurity configurationとしてmainfile.phpが読み取り専用になっていること,install_remove_f9580686575e6808b413dda フォルダを削除しておくことが求められる.管理者メニュー画面はこんな感じだ.

    image

    モジュールは自分で探しにゆかなくてはならないが,Module Repositioryというのが整備されているのでその中で探せば大概見つかりそうだ.初めてデバッグコンソールが出てきた.

    image

    tplという耳慣れない拡張子を持ったファイルが並んでいる.どうもこれがSmartyのTemplatesというものらしい.少なくともHTML出力されるのではないので,動作が止まってしまうということは起こらないだろう.公開版ではそれも止めることができる.ともかくこれでPHP7で動くXOOOPSを手に入れることができた.これからはいろいろな情報を収集するのに積極的に英語圏で活動しなくてはならなくなりそうだ.しかし,果たしてこのXOOPS最新版にあの古いユーザ会サイトのコンテンツを移植することができるだろうか?

    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台に激減しているというところが不思議…