だいぶ環境が整ってきた

比較的近距離のサイクリングから帰るとUQモバイルからの発送メールが入っていた.配送業者は佐川急便なのでもしかしたら今日中に届くかもしれないと思ったのだが,午後6時を過ぎてまだ届かないので多分明日ということになるのだろう.SIMが届いたらやることは2つある.一つは現在使っているHUAWEIのP20 liteスマホで動作確認すること.注文したSIMは月額1980円という格安プランなのでデータ容量は3GB/月しかない.それより問題なのは通信量が上限を超えたときの通信速度が300Kbpsまで落ちてしまうという点だ.

ただし,このSIMはお試しに買ったもので,動作が確認できたら改めて月額2980円のスマホプランRに切り替えるつもりでいる.この場合は電話番号もMNPで移す必要がある.プランSのSIMはトラさんからもらった ASUS の ZenFone Go に挿してみて使えるようなら姉に譲るつもりだ.姉はスマホを使うことに相当な抵抗があるようだが,一度気が変わって使ってみようかな?と言っていたこともあるので,多分受け取ってくれるのではないかと思っている.ここまでできれば,あとはWIMAX2+の契約を解除して Speed Wi-Fi NEXT を返すだけだ.

もしかすると現物は返却しなくて済むかもしれないが,もう一つ前のWIMAX ルーターを含めて今後は有線LANはもとより,WIFIルーターも必要なくなるかもしれない.というのは,当初は Bluetooth でテザリングしていたのだが,スマホをWIFIのアクセスポイントにすることができるということがわかったからだ.Bluetooth より動作が安定しているし,スピードも少し速いような気がする.スマホをアクセスポイントにしてファイル共有に設定すると,自動的にプライベートネットワークに切り替わるのでかなり安心感がある.

これまでは開発用マシーンからはセキュリティソフトの更新など特別な場合を除いてはインターネットにアクセスできないようにするというポリシーでやってきたが,大幅に緩和して今後は自由にアクセスしてよいということにした.多少の不安はあるが,これによって得られる解放感は大きいので思い切って決断した.

image

上図では①開発用ノート(メイン),②10インチ 2 in 1 タブレット(サブ),③SONY VAIO モバイルノート,④7インチタブレット(メーカー不明)の4機がスマホのテザリング用アクセスポイントに繋がっている.①と②は64ビットだが,③と④は前にtamo2氏が訪ねて来られたときに置いていってくれたもので32ビット,この2つは主にテスト用に使うことになる.これら4機はマイクロソフトの Mouse Without Borders を使ってマウス・キーボード・トレーの共有を実現している.ほとんど理想的な環境になった.ストレージも共有できるので完全に一体化した一つのマシーンと見ることができる.

現在スマホに装着しているのは楽天UN-LIMITのSIMだが,パートナーエリアでは上限5GBまでしか使えないので現在はすでにそれを使い切って1Mbpsという速度に落ちているはずだが,実際にはもっとずっと遅くなっていて午前10時半過ぎに測定したときには上の画面で見るように130Kbpsしかなかった.昨晩は,④のタブレットでカスペルスキーを起動しようとしたところ「読み込んでいます」のまま前に進まないので,再インストールを試みたところ以下のようなエラーになった.

image

午前3時を回っていたので放置して寝ることにしたが,今朝もう一度やってみると確かに時間は掛かるが起動できて問題なく動作していることが確認できた.時間帯によっては800Kbps以上出ていることもあるが,150Kbps程度でもログのアップロードくらいでは苦にならないのでなんとか使えるのではないかと判断している.Youtubeのように画像の多いサイトにアクセスするのはかなり辛いが,スマホなら動画もほとんど途切れることはない.わずか130gくらいしかないのだが,WIFI ルーターを持ち歩かなくて済むというだけでずいぶん楽になった気がする.

富山のamory氏からお米が届いた.

富山からおいしそうなお米が届いた.精米したばかりの新米だ.(実は7月にも鹿児島のtamo2さんからお米を頂いているのだが,このときはSMSを送ることすらできなかった...ごめんなさい)

image

コロナ禍でリアルに困窮している人たちが日本中に溢れている.これまで外食で済ましていた人たちが自炊するようになってきているから,今年はもしかすると米価が上がり始めるのではないかと心配していたので,とてもありがたい.スマホが中途半端な状態になっているので,ネットにアクセスするのにタブレットを使うようになったためずるずると「仕事」に引き込まれるような状況になってきているが,まだタブレットは長机の上にあり,仕事机の前に座ってメインのマシーンを起こすところまでは至っていない.

UQモバイルから本人確認書類の送付を求めるメールが入ってきた.今日は日曜日ですでに連休に入っているのに出社しているのだろうか?申込みはWeb上で18日(金曜日)に実施しているので自動処理だとすれば時間が掛かり過ぎている…これで一応審査は通ったということのようだが,ミヂカはデビッドカード(VISA)なので実現するかどうかはまだわからない.応答はおそらく早くても23日過ぎということになりそうだ.

わたしはログを付けながら作業するというスタイルで仕事しているが,ログはタブレットをネットにつないで書きながらアップしているのでネットアクセスが安定しないと心理的にも落ち着かない.これまではWIMAX2+でネットにアクセスし外出するときもポータブルWIFIを持ち歩くようにしていたが,これを廃止してスマホだけで済ませるようにするというのが今回回線切り替えの趣旨だ.WIMAX2+はギガ放題で月額4千円なのでこれを節約できればかなり助かる.

日本のスマホ料金は高すぎるというのが政府の公式見解なのでそれに沿った動きにはなっていると思うのだが…楽天UN-LIMITが使えなかったというのは端末未対応ということなのでやむを得ないとは思うが,5Gに乗り遅れないために相当無理をしているような気がする.総務省から何度もフライングを注意されているし,i-phoneに関してはほとんどの機種が未対応ということのようだが,大丈夫なのだろうか?実際わたしの周辺ではほとんどandroidを使っている人はいないし深谷市に限定すればandrod用のアクセサリを扱っている店はほとんど存在しない…

ともかく楽天 UN-LIMITから離脱しなくてはならないのだが

楽天 UN-LIMITは使えないのは仕方ないとしても,これまでは問題なく使えていた楽天モバイルに戻れないというのは大問題だ.音声通話を使うことは滅多にないし,それもほとんどの場合はLINEで間に合うので電話が使えなくてもなんとかなりそうは気はするが,電話番号が変わるというのは受け入れられない.特にネットバンキングなどで使っている二段階認証が通らなくなるというのははなはだ不都合だ.

ともかく楽天 UN-LIMITから離脱しなくてはならないのだが,どうすればよいか?楽天モバイルで使っていたSIMはau回線を通っていたはずなので,UQモバイルに切り替えるというのも一案だ.楽天 UN-LIMITはパートナー回線では上限5GBでそれ以上使うと1Mbpsに落ちるが,UQの場合は同等の料金で10GBまで使える.⇒早速手続きを取ってみたが,審査に通らなかった.ゆうちょ引き落としが通らなかったので,銀行口座引き落としで再申請してみたがこれも弾かれたので,ダメ元でゆうちょ銀行のミヂカを試してみることになった.これはデビッドカードなので通るか通らないかは五分というところだが,金曜日のこの時間になってもまだ応答がないので,審査結果は連休明けの23日まで待つしかなさそうだ.

今日は自転車の空気入れを修理した

楽天 UN-LIMITの「使い放題」というキャンペーンに乗ってスマホのSIMを切り替えてみたが,失敗だった.HUAWEIのP20 liteはサポート対象外というのはわかっていたが,ネット上には「うまくいった」という書き込みが散見されたので一か八か試してみたのだが,やはりダメだった.マップでは赤くなっていたので「楽天エリア」内と思っていたのだが,よく見ると圏外で大宮あたりまでしか届いていなかった.「パートナーエリア」には入っている.

そもそも端末情報に電話番号が「不明」と出てしまう.(古いSIMの電話番号は認識できる)楽天LINKが使えればIP電話で外部の固定電話とも通話できるのでそれだけでも十分と思ったのだが,楽天リンクアプリは最初に電話番号を確認する作りになっているため,ログインすることさえできない.(データ通信は可能なのでLINE同士なら音声通話も可能だが…)

「楽天エリア」内に入るとアクセスできるという話もあったので,一昨日には電車に乗って大宮まで出かけてホームから接続を試してみたが,成功しなかった.画面には「パートナーエリア」という表示が出ていたので,おそらくau回線に負けてしまったのだろう.帰り足で立ち寄った楽天ショップ(熊谷市)の店員の話によると「構内モードをオン・オフするとつながる場合がある」ということだったが,また電車に乗って大宮まで戻るのも大儀なのでそこまでは試さなかった.「オンラインとショップは連携していない」ということのようでサポートの直通電話番号を教えてもらっただけですごすごと帰ってきた.

翌日(昨日)姉の家の電話を借りて前日聞いた番号に電話したが,スタッフにはつながらない.自動音声でカテゴリ分けされた番号を押すように指示されるだけだ.応答手段はSNSに限定されているので,こちらとしてはどうすることもできない.(楽天リンクアプリが使えないのでSNSも使えない)万事窮すというところだが,念のためネットで見つけてメモしておいた番号(0800-600-0700)が役に立った.

作業に復帰した模様

ついに作業に復帰するときが来たが,錆落としが大変だ.Windows Live Writerでいきなりエラーになった.

image

Open Live Writer があるというので,ダウンロードしてインストールしてみた.WIFIでは投稿できたが,テザリングではまだ成功していない.⇒通った!なんとかなりそうだ.もう一度 Windows Live Writer で投稿してみよう.⇒やはりダメのようだ.Open Live Writer なら投稿できる.これでいくしかなさそうだ.タッチパッドが過剰反応するのでとても使いづらい.修理に出す前は,下図の「マウス」と「入力」の間に「タッチパッド」があったのだが…

image 

何かパッドの上にカバーするものを貼り付けるしかなさそうだ.⇒黒いクロスがあったので両面テープで貼り付けてみた.⇒誤動作はほとんど回避できるようになった.エラーが発生した.これは例のWAFに関わるものではないだろうか?

image

ロリポのWAF設定で検出されたシグネーチャを取り出して,WordPressの管理画面からSiteGuardのWAFチューニングサポートで設定することで通った.これでログの更新に関しては一通りルーチンが通ったことになる.

蛇口から流れ落ちる水音をトリガーとして瓶から脱走したナメクジの行方

姉が届けてくれたキャベツの外葉を剥いで洗っていたら,内側の白い結球した葉の中に小さなナメクジが縮こまっているのを見つけた.ナメクジに会うのは久しぶりだったので梅酒用の瓶を天袋から下ろし外葉を二枚入れてそこで飼うことにした.ナメクジは葉っぱの折り重なったややこしいところにいたのでつまみ出すのは難しそうに思えたが,指を伸ばすと黙ってその指に乗ってきたので思いの外簡単に移すことができた.とても小さな赤ちゃんナメクジと言ってよいくらいの幼いナメクジだった.ナメクジは結構リラックスしていて指から外すとすぐに体を伸ばして居心地のよさそうな位置に移動した.このナメクジは最初から与えられた環境になじんでいるように見えたのでフタはしなかった.

93058562_1820308731438251_4009976437586001920_o

キャベツの葉は日持ちがいいので2,3日放置しておいたが,ナメクジのいる辺りの葉っぱがしおれてきているのを見て,瓶を流しのところまで持ち出してキャベツの茎に届くまで少し水を張ってみた.翌朝みるとしおれかけていたキャベツはパリパリに戻り,巻き癖が付いていたところまでピンと張り切った状態になっていたが,ナメクジの姿が見当たらない.ナメクジは隠れるのが上手なのでどこかに隠れているのかと葉を捲くってあちこち探してみたがどうも本当にいなくなってしまったようだ.以前にも瓶に水を入れたことがきっかけになって飼っていたナメクジを逃してしまったことがある.ここから出てゆくのはよいがあの小さなナメクジがどうやって戸外の安全な場所まで分速30センチメートルの足でたどり着くことができるのだろう?

外に出るためにはまず.長い机の端まで移動しなくてはならない.そこから垂直に1メートルくらいを下って床に出たとしてもまっすぐ戸口まで向かうことができるのだろうか?確かに潜水艦の潜望鏡のような伸縮自在の便利な目玉を持ってはいるが,あのサイズでは室内の複雑な「地形」を俯瞰するのには大して役立たない.キッチンの壁の換気扇の穴を見つけることができたとしても,そこから地上までは5メートル以上のザラザラな壁面を垂直に下る必要がある.ドアの隙間をかいくぐって外に出たとしても地上に降りるためには長い鉄製の階段をさらに何段も降りなくてはならない…ここに居れば野菜だけは切らさず供給されるであろうこともうすうすは知っていたはずだ.なぜこのナメクジはその安逸な生活を捨てて危険に満ちた外界に向かうという「暴挙」をあえて決断し実行したのだろう?

ここで「決断」と言っているのは明らかにこの行動は計画的なものであったと認められるからだ.つまり,ナメクジはわたしが眠り付くのを待ってこの部屋を出ていったように思われる.「決断」したのはそれより前,おそらく蛇口から瓶に注がれる細い水道水のひそやかな水音を聴いた瞬間だったのではないかとわたしには思われる.ナメクジやカタツムリなど水から陸に上がった軟体動物にあっては雨音は心地よい天上の音楽だ.水音ないしそれに伴う水の匂いは彼らにとっては目眩く祭祀の表象であり生の歓喜そのものと言ってよい.その水音が彼の本能を呼び覚まし,自由への憧れに駆られて決行に至ったのだろう.『自由への脱出』それはこの小さなナメクジにとっても一生に一度の死物狂いの冒険だったに違いない.

出窓のところに今年もまた訪れた鳩のつがい

北側の窓は冬囲いを解いて風が抜けるようにしている.東側の出窓はまだぷちぷちで覆ったままなので外は見えないが数日前から鳩が来て何やら物音がしている.出窓の上に巣を作ろうとしているのだろうか?まだ確認していないが,多分つがいだと思う.この鳩たちは毎年この季節になると戻ってきて巣作りをしようとしている.数年前に隣家の煙突の中に掛けた巣から追い出されたカップルだ.この鳩たちが温めかけていた卵を失った季節にわたしもたった一人の息子を失った.出窓のひさしに飛び移ったりするたびにかなり大きな音がする.東側の冬囲いも外して鳩たちの様子を見てみたい気もするが…⇒鳥が離れている間に開けてみた.今年もつがいで来ているのかどうか?という点が気になるところだ.

XoopsCore25でWordPressの蓄積データを復活させようとしているところだが,なかなかうまくゆかない.WordPressをXOOPSのモジュールとして使うためにはXOOPSとWPをつなぐ仲介となるXpressMeというモジュールが必要になる.XpressMeは内部にWPを抱えたような形態で実装されるが,どうもこの両者がシームレスに接続していないように思われる.XpressMe Integration Kitを開発・配布していたサイト http://ja.xpressme.info/ はすでに更新を停止していて,過去記事もほとんど削除されてしまっている.仮にwordpressモジュールの実装に成功したとしても,もしやるとすれば今後は自力でメンテナンスする以外の手段がない.これもかなりリスキーに思われるので,ひとまず退却することに方針決定した.つまり,WordPressをXOOPSから切り離して独立させるという方向だ.

WordPressで複数ブログを管理する方法は複数ある.WordPressを1個,データベース1個で複数ブログを管理する「マルチサイト機能」とWordPressを複数個インストールする方法があり,後者の場合には単一のドメインで行う方式と複数ドメインを用いる方式が考えられる.もっともシンプルなのは最初の方法だが,実装は結構厄介でセキュリティ上の問題を指摘する向きもあり,ロリポップではサブドメインを使ったWordPressの複数インストール方式を推奨している.どちらにしても,まずローカルで過去記事が読めるようにしなくては始まらないので,まず,それを試してみることにする.既存テント村ブログをローカルに移植できることはずっと前に確認している.基本的にはそのときと同じ手順で復元できなくてはならないのだが…参考のためにそのころのログを読み直しておこう.⇒いや,どうもそんな簡単な話ではなさそうだ.インストール済みのWPにlocalhostでアクセスしてみたが,データベース接続エラーが発生する.これを回避するためにwp-config.phpでデータベースアクセス用パラメータを設定すると,以下のエラーが起きる.

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at postmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.


Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.2 Server at localhost Port 80

どうもWPは本来作り込まれたブログと一体化している模様で,localhostでアクセスした場合には最初にlocalhost/wp-admin/install.phpを実行しようとする.ここで矛盾が生じているものと思われるが,DBサーバーにすでに構築済みのブログデータがないと開けないようになっているのではないだろうか?この辺りにマルチサイト機能を実装しようとするときの難しさがあるのかもしれない.以前テント村を完全に再現できたとしているが,そのときのDBデータはバックアップしてあるだろうか?もしかすると,それすらやり直しになるかもしれない…⇒旧サイトデータをDBにロードしておくということも考えられるが,おそらくそれでもうまくゆかない可能性はある.というのは各種の秘密キーがインストール時に決定されてしまうようになっているためだ.XOOPSはXOOPS_SALTという値を持っているが,それとはまったく別のものだ.

ロリポップは最大30個までのデータベースを持つことができる.また,同一サイトに複数のWordPressをインストールすることを認めているのでWordPressを複数導入し,それぞれ個別にデータベースを使うというのが一番無理がない構成であるように思われる.テント村ブログをローカルに移植する作業はそれほど難しくはなかったはずなので,あとからやり直しはできるだろう.いまはとりあえず,新しいWordPressを1個導入してそれに保存してあるDBデータを背負わせて見ることにしよう.テント村のときは最初にMySQLにデータをロードしてからWordPressを導入という手順になっていたと思うのだが,違うだろうか?

テント村ではロリポップ!からサイトイメージをダウンロードし,それにサイトからMySQLでエクスポートしたデータをインポートしているから,基本的に完全に両者が整合していると言える.安全な手順としては,最初にロリポでWordPressとデータベースを追加導入し,それをローカルに持ち出すということも考えられる.この場合は保存データとの不整合はSQLを直接編集することで行うしかないように思われるが,確実に実施可能であるのならそれもやむを得ないのではないか?⇒WordPressのデータをエクスポート/インポートするという手段もあるようなのでそれを使うという方法もない訳ではない.このためにはもう一度古いサイトを復元しなくてはならないが…もしかするとそれが最短である可能性もある.ロリポにWPとDBを追加する際のパラメータを保存データに合わせるということももしかしたらできる可能性はある.それができればかなり実現までのステップを短縮できるのではないか?

Failed opening required ‘../../../ mainfile.php’ (include_path = ‘C:\xampp7\php\PEAR’)

いつどこでそうなったのかわからないが,MySQLを起動できない状態になっている.

18:23:25  [mysql]     Status change detected: stopped
18:23:25  [mysql]     Error: MySQL shutdown unexpectedly.
18:23:25  [mysql]     This may be due to a blocked port, missing dependencies,
18:23:25  [mysql]     improper privileges, a crash, or a shutdown by another method.
18:23:25  [mysql]     Press the Logs button to view error logs and check
18:23:25  [mysql]     the Windows Event Viewer for more clues
18:23:25  [mysql]     If you need more help, copy and post this
18:23:25  [mysql]     entire log window on the forums

ともかくバックアップに戻ってみよう.xampp7のバックアップは2020-03-28が最新だ.念のためOSを再起動してから始めよう.⇒MySQLは起動できるようになったが,あまりよい状態ではない.WordPressのデータベースでprefixの付かないテーブルが残った状態になってしまっている.まず,これを整理してクリーンな状態から始めた方がよさそうだ.12020-03-30まで戻る必要がある.XoopsCore25のバックアップも2020-03-28しかないので,現状を一度バックアップしておこう.

WordPressをアンインストール→WP関係のデータベースが丸残りになっている.⇒手操作で削除したが,picotoとprotectorのアイコンが出ていないという状態になっている.Xoopsも一度バックアップに戻した方がよいのではないだろうか?⇒両側を完全に2020-03-28の状態に戻してみたが同じだ.ということはすでにこの時点でアイコンは出ていなかったということになるのだが…

image

いや,それでも今回はWordPressをアンインストールしてprefix付きのテーブルは全削除されたので多少改善している.2020-03-31 にはWordPressモジュールを作り直して再インストールしているが,最終版Xoops25には入っているはずだから,それを使うことにしよう.

そのあとにもPHPコードの修正を実行しているので,この際modulesとextras, およびxoops_data, xoops_libの内容をすべて差し替えてもよいのではないだろうか?始業時のバックアップはXoopsCore25 2020-04-05 BADの中に入っている.⇒実行した.これでpicoとprotectorのアイコンも表示されるようになった.⇒インストール可能なモジュールが2個になった.WordPressとXpressmeだ.後者の方をインストールすべきだろう.⇒あとで混乱しないようにwordpress モジュールを削除しておこう.⇒Xpressmeをインストールしてエラーが出てしまった.

Fatal error: require_once(): Failed opening required ‘../../../mainfile.php’ (include_path=’C:\xampp7\php\PEAR’) in D:\XoopsCore25\htdocs\modules\xpressme\include\add_xpress_config.php on line 2

この記述はあとから追加したものではなかったろうか?wp-config.phpの中ですでにincludeしているので,add_xpress_config.php では不要であるような気がする…include_path= C:\xampp7\php\PEAR’となっているところが解せない.⇒add_xpress_config.php とwp-config.php の両方で該当箇所からrequired ‘../../../mainfile.php’ の記述を抹消して動作するようになった(インストール時のエラーが解消した).ただし,XPRESSME BLOG の画面からWordPress Adminに遷移しようとしてエラーが発生する.

xpress_eval関数の中でXOOPS_PATHないしXOOPS_TRUST_PATHが未定義の状態になっているものと思われる.3/31のログには「admin.phpでmainfile.phpをインクルードするようにしてこのエラーは解消した」とあるが,解決していない.WordPress Adminを実行する前の段階で何度かxpress_evalが呼び出されているが,その時点では問題なくパスしている.どこかでリセットされているように思われる.admin.phpに入った時点で落ちているようだ.

廃棄を予定していたスチール製書棚を復活させてみた

IMG_20200402_182500

旧サイトをPHP7で動かすためにはPHPのデバッグは避けられない.PHPのデバッグ環境を構築する際の候補は複数ある.①Eclipse,②Visual Studio 2017/2019+PHP Tools for Visual Studio,Visual Studio Code+XDebug,atom+XDebugなど.

Atomのphp-debug使い方備忘録
https://qiita.com/shou-w/items/ebd6da6eecb3db0252ee

これらのすべてを試みたが今のところどの一つも成功していない.これらすべてはサーバー側のデバッガとしてXDebugを使っているものと思われる.EclipseはIBMが提供しているパブリックドメインだ.PHP開発に特化したIDEで以前多少使ったことはあるのだが,使い方を忘れてしまった.完備したIDEシステムだがやや敷居が高い.Eclipseはいまどのくらい使われているのだろうか?Eclipseではまだデバッガを導入するところまで進んでいない.

Visual Studio+PHP tools for Visual Studioはおそらくこれらの中では一番ゴールに近いような気がする.VSのIDE環境は使い慣れているので一番こなし易いが,現在の設定ではまだ動いていない.一度だけ「一瞬」動作したことがあったが,何も設定変更していないのに動作しなくなってしまった.リダイレクトでループが発生するなど動作にもかなり疑問がある.おそらくこれはこのツールの「言いなり」にプロジェクトを構成するようにすれば動かせるのではないかと思われるので,一応出口はある.PHP tools for Visual StudioはVS Codefdeでも使える.

VS CodeもVSと同等の羽の生え揃ったIDE環境で,atomは汎用のエディタだが設定によりIDEとして使えるようになる.VS CodeとatomはともにPHP Debugという拡張機能を使っているので,どちらかで動作すれば他方でも動かせるようになるのではないかと思われる.atomはxamppと相性がいいようだが,立ち上げには皆さんかなり苦労している模様だ.

どうもいまいち乗りが悪い.思い立って廃棄を予定していたスチール製書棚を復活させてみた.

Eclipse以外のPHPデバッグ環境を試みる

PHPのデバッグをやる覚悟でEclipseを導入したものの使いこなすまでには相当敷居が高い.WordPressをXOOPSのモジュールとして使うのではなく,完全に独立な外部アプリとして使うことも考えてみた.すでにテント村ではそのような使い方をして成功している.一つのサイトに複数のWordPressを導入することは不可能ではない.現行サイトではWordPressはサーバー側に導入されているものを使っている.これをやりくりして2つのブログを運営することは可能なのではないか?おそらく従来の屋根裏部屋で蓄積したデータベースを再利用することはできるのではないか?と思われる.しかし,ここでもたついているとWordPressだけで時間を使い切ってしまいかねないので,WordPressモジュールを作り直してもう一度試してみたい.

というのは,現在起きているエラーはWordPress内のコードで発生しているが,現行のWordPressは本来PHP7に対応しているはずなのだから,このようなエラーが発生していること自体おかしいと見なくてはならない.つまり,どこかで手順を誤っているのではないか?と推定されるので,昨日のバックアップに戻って出直すことにしたい.⇒WordPressの最新版 5.3.2-jaとXPressME_Integration_Kit_Ver2.3.6の組み合わせだ.⇒実行した.以下のエラーが出ている.

Error : Error: Call to undefined function mysql_get_server_info()

この関数はhappy_linuxの中で1箇所,xpressmeで5箇所使われている.すべての出現をmysqli_get_server_infoに変えてみる.happy_linuxは対応しているので修正は不要だ.xpressmeでも1箇所は対応済みになっている.修正が入ったのはindex.php, oninstall.php, class-wp-site-health.phpの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\xpressme\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\xpressme\include\memory_limit.php:17 Stack trace: #0 D:\XoopsCore25\htdocs\modules\xpressme\include\add_xpress_process.php(202): xpress_set_memory_limmit() #1 D:\XoopsCore25\htdocs\modules\xpressme\wp-config.php(85): require_once(‘D:\\XoopsCore25\\…’) #2 D:\XoopsCore25\htdocs\modules\xpressme\wp-load.php(37): require_once(‘D:\\XoopsCore25\\…’) #3 D:\XoopsCore25\htdocs\modules\xpressme\wp-admin\admin.php(34): require_once(‘D:\\XoopsCore25\\…’) #4 D:\XoopsCore25\htdocs\modules\xpressme\wp-admin\index.php(10): require_once(‘D:\\XoopsCore25\\…’) #5 {main} thrown in D:\XoopsCore25\htdocs\modules\xpressme\include\memory_limit.php on line 17

このエラーは結局昨日のエラーと同じだ.WordPressのコードが完全にPHP7対応であることは確認済みなので,これらはIntegration Kit内のコードと考えられる.一つづつ潰してみよう.mysql_connectの出現は10箇所ある.mantisに1つ,systemに3つ,あとはxpressmeだ.systemの3つは修正不要と見られる.undefined function mysql_close()になった.mysql_closeは8箇所ある.mantis, sysytem, xpressmeだ.⇒修正して前に進み,「データベース接続確立エラー」になった.wp-config.phpをチェックしてみよう.wp-config.phpではデータベース名,ユーザ名などをXOOPSから引き継いでいるのでコード自体は間違っていないはずだ.おそらく,config_from_xoops.class.php(56)で出されている警告に関係しているもののように思われる.XOOPS_PATHという定数が未定義とされている.

この値はmainfile.phpで定義されている.mainfile.phpは実行されていて出口では定義は確定しているが,config_from_xoops.class.phpが呼び出された時点では確かに消えている.なぜだろう?名前空間が一致していないということなのだろうか?それともどこかでリセットされているのか?admin.phpでmainfile.phpをインクルードするようにしてこのエラーは解消したが,WPの管理画面ではなくSystem Option画面が開いてしまう.こうなるともうデバッグするしかなくなるが…

Eclipseはどうも取っ付きにくい.昔扱ったときにはマニュアルも読まずに使えていたような気がするのだが,現行版のユーザインタフェースにはかなりの疑問がある.あるボタンを押して画面のどこかが切り替わったとき,同じボタンを押すと元の状態に戻るというのが基本だが,Eclipseではボタンを押すとそのボタンまで消えてしまって呆然と立ちすくむという状況に陥ってしまう.「設計思想」が悪い.

別のPHPデバッグ環境を探してみた.Visual Studioでできるという.探すとPHP Tools for Visual Studioというのがあった.現在VSは無償配布されているが,このツールは23,900円.30日間の試用期間があり,それを過ぎてもデバッガ以外は使えるという話だが…いまの作業に使うだけなら,多分30日あればお釣りが来るはずだ.これとは別にVisual Studio Codeというエディタもあった.昔,VSのエディタでHTMLを書いていたことがある.このエディタは一つで数百のプログラミング言語をサポートしているという.ともかく使ってみよう.VS CodeではPHPのデバッグまでできるようだ.Xdebugという外部デバッグツールが必要なようだが,もしかするとこのエディタだけで間に合うかもしれない.

Visual Studio 2017でPHP開発
https://qiita.com/akabei/items/70fafaef7b86afb5a7ec

PHPのデバッグ(ステップ実行)環境を構築してみた
https://yasu404.com/1004/

Visual Studio Code
https://azure.microsoft.com/ja-jp/products/visual-studio-code/

まず,VSCodeから評価してみよう.⇒HTMLエディタとしても使えるが,プレビューは出ない.ダークウィンドウは目が疲れる感じだが,テーマで切り替えることはできる.検索などはメチャ速くていかにも軽い.使い勝手は悪くないが,VS 2017ないしVS 2019でPHPデバッグができるのなら不要かもしれない.

Visual Studio 2019がすでにリリースされているのでダウンロードしてみた.2019/08/14のログには「VS2005からVS2017の変換がなかなか収束しない」とあるが,ソースの修正はすでに完了している模様だ.ただし,例によってOCXのレジストリ登録でエラーが発生する.VS 2017ではコンパイル→ビルドまでは通るが,VS 2015の動作はかなりおかしい.まだ下位のプロジェクトがビルドされていないのに,上位プロジェクトから下位プロジェクトのモジュールにアクセスできないという理由でビルドが止まってしまう…⇒Visual Studio 2019をインストールしたが,動作は2015と同じでビルドが進まない.

どうもVisual Studioの動作が安定しないので,VS CodeでPHPデバッグを試みることにする.⇒atomというエディタがxamppとの組み合わせでよく使われている.atomとVS codeはかなり似ているが,atomの方がよりシンプルだ.この意味ではatomの方が使い易そうな気もするが,VS Codeの方が多機能でより強力に見える.各種言語が最初から備わっているのも便利だ.ということでVS Codeを使ってみることにする.

Visual Studio CodeでPHPをデバッグする方法
https://qiita.com/deux222/items/af75319ece05653c4bb5

PHPプログラミングも快適に! VS Codeの二大拡張機能
https://www.atmarkit.co.jp/ait/articles/1809/11/news028.html

【Windows】Visual Studio Codeを使ったPHP開発環境を整える
https://www.out48.com/archives/2584/

Summary
  • Xdebug installed: no
  • Server API: Apache 2.0 Handler
  • Windows: yes – Compiler: MS VC 15 – Architecture: x64
  • Zend Server: no
  • PHP Version: 7.4.2
  • Zend API nr: 320190902
  • PHP API nr: 20190902
  • Debug Build: no
  • Thread Safe Build: yes
  • OPcache Loaded: no
  • Configuration File Path: C:\WINDOWS
  • Configuration File: C:\xampp7\php\php.ini
  • Extensions directory: C:\xampp7\php\ext
    Instructions
  • Download php_xdebug-2.9.4-7.4-vc15-x86_64.dll
  • Move the downloaded file to C:\xampp7\php\ext
  • Edit C:\xampp7\php\php.ini and add the line
    zend_extension = C:\xampp7\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll
  • Restart the webserver