実は、レンタルサーバにお願いして、PHP7.3を導入していただきまして、それに伴いXoopsとWordpressもPHP7対応版にアップデートしていたのですが・・・
・Xoops X本体:20180208->20181220
・Wordpress:5.2.0 -> 5.2.2
・Wordpress:5.2.0 -> 5.2.2
Xoops X 20181220は今まで使っていたPHP5.5でも動作するのですが、Wordpressの5.2.2はPHP5.6以上が必要だそうです。
なので、順番としては、
1.Xoopsを上げる
2.PHPを上げる
3.Wordpressを上げる
2.PHPを上げる
3.Wordpressを上げる
というように計画してみました。
しかしながら、だいたいすんなりいかないのがこの手のアップデート。
さらにXoopsはすでに利用者が少数で、検索してもあまり情報が無いのです。
Xoops X 20181220は、xupdate経由で特に問題なく更新できました。
(実はmainfile.phpのrootディレクトリ設定が間違っていて、xupdateがまともに動かなかったのは内緒)
その後PHP7に上げたら、いきなりトップページが真っ白に。
この時点で頭の中も真っ白です。
とりあえず落ち着いて、PHPデバグモードにしたり(いったんPHP5に戻し、Xoopsを動作可能状態にしないとダメです)サーバログを確認したりすると、どうやら今使っているテーマ(theme.html)にPHP7非対応の命令を利用していたことが原因でした。
ユーザエージェントの処理分岐で、eleg()を使っていましたが、これがPHP7では使えないとのことで、preg_match()に置き換え。
すると、真っ白なページから抜け出して、ほっと一息。
しかしXoopsは立ち上がったのですが、つれづれ日記にはいろいろと問題が発覚。
(1)記事本文やコメントが表示されない。(件名だけ見える。)
(2)日記用ブロックに”キャッシュディレクトリに書き込みできない”エラーが出る。
(3)Use of undefined constantエラー ワーニングがたくさん出る。
(2)日記用ブロックに”キャッシュディレクトリに書き込みできない”エラーが出る。
(3)Use of undefined constant
まずは(1)。
これは、記事で改行をいじるためにつかっていたbrBrbrというプラグインがPHP7に対応していなかったためでした。
最新版にアップデートすることで、無事本文が表示されるようになりました。
次に(2)。
レンタルサーバの仕様で、PHP5とPHP7の動作ユーザが異なっており(PHP5は管理者か専用権限、PHP7はユーザ権限)、PHP5が作成したuploadやtemplate_c、cacheディレクトリには、PHP7からアクセスができないということがわかったため、すべてのディレクトリのオーナーをユーザに変更してもらいました。
(レンタルサーバはセキュリティの関係上、SSHもTELNETも許されていない・・・安全ですが面倒とも言える)
最後の(3)は、WordpressをPHP7対応の5.2.2にアップデートしても消えなかったので、Xpressmeを疑いました、。
Xpressmeは、WordpressをXoops上に統合させるためのモジュールですが、最新版は2.5.4を最後に更新終了。
新しいバージョンが出る望みはほとんどなさそうなので、自力で直すしかありませんでした。
幸いなことに、custom_functions.phpとxpressme_class.phpの2つのソースファイルで、undefinedとされた定数をdefineしてやると、ワーニングは消えました。
とりあえずこんな感じでアップデート完了ですが、何かおかしな挙動を見かけたら、教えていただければ幸いです。
Wordpressをアップデートしたあと、メディア(画像・映像ファイル管理機能)のベースURLが変わってしまい、以前登録したものが見えないとか、新しくアップロードしたものが見えないとかありましたが、それもなんとか解決できました。
しかし、Xoopsの開発をされている方はもうほとんど残っていないので、なかなか情報がなく辛いところです。