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
Instructions
C:\xampp7\php\php.ini
and add the linezend_extension = C:\xampp7\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll