WP5.0、PHP7.2、MySQL5.7のテスト環境で検証を行ったにもかかわらず、もたもたして実環境に対応していないうちに、さらにWP5.2になってしまった。
そのため、現時点での最新環境、WP5.2.1、PHP7.3、MySQL5.7の条件にて、ステージングを利用してテスト環境を構築、検証を行った。
結論から報告する、問題発生!である。(デバック設定がONの場合、※に追記あり)
前回の状態でさっさとアップデートしておけばよかったと後悔である。
1.ステージングサーバの環境を作成する。
さくらインターネットのスタンダードでは、ステージングサーバは一つしか作成できないので、前回作成したステージングサーバ(PHP7.2、MySQL5.7)を削除する。
新規作成で、新しい条件のステージングサーバを作成。
前回は選択肢になかったPHP7.3を設定する。
2.検証するWordPressのスナップショットを追加する。
追加するWPの現行の環境は、WP4.9.10、PHP5.61、MySQL5.7。
前回のスナップショットはすでにデータを更新しているので一旦削除して、最新データであるWPを追加する。
ステージングサーバへのセットが完了し、テスト環境でのWPを表示する。
すると、サイドメニューに表示されるはずのRSSフィードの場所に、エラーメッセージが表示されている。
オレンジ色の部分のエラーメッセージは、
( ! ) Notice: Undefined index: ps_editor in /var/www/html/○○○/○○○/○○○/wp-includes/class.wp-scripts.php on line 230
管理ページにログインし、外観>ウィジェット で上部に同様のエラーメッセージが表示している。
前回の問題が無かったテスト環境との違いは、
前回テスト環境:PHP7.2、MySQL5.7
前回実環境:PHP5.61、MySQL5.5
今回テスト環境:PHP7.3、MySQL5.7
今回実環境:PHP5.61、MySQL5.7
PHPの問題か?WP4.9.10がPHP7.3に対応していないための不具合か?
後者であれば、テスト環境でWPをアップデートすれば問題は解決されると思う。
なにせWPが推奨している環境がすべて揃うのだから。
ということで、WP5.2.1にアップデートしてみた。
更新時に、データベースの更新を促すボタンが表示される。
が、エラーは解消されず、サイドメニューのRSSフィードは表示されず、同様のエラーメッセージが表示されている。
さらに管理ページのいくつかのメニューにアクセスすると別のエラーが表示されている。
投稿メニュー、固定ページメニューに出力されており、大きな問題である。
投稿>新規追加で、テスト投稿してみると、投稿ページ上部にエラーメッセージは出ているが、投稿記事は問題なく公開されている。
結論として、本番環境でのPHP7.3への移行は見送ることにした。
前回PHP7.2のテスト環境では、RSSフィードは問題なく表示されていたので、ステージングサーバの環境をPHP7.2にして、WP5.2.1のアップグレードの検証を行うこととした。
各ページで出力されているエラーメーッセージ
・投稿>投稿一覧、固定ページ>固定ページ一覧
Notice: compact(): Undefined variable: post_status in /var/www/○○○/○○○/○○○/○○○/wp-admin/includes/post.php on line 1080
・投稿>新規投稿、固定ページ>新規固定ページ
( ! ) Notice: compact(): Undefined variable: context in /var/www/○○○/○○○/○○○/○○○/wp-includes/post.php on line 3387
※その後、前回のテストからWPのconfigファイルを変更していたことに気づく。
・エラーメーッセージについて検索して、PHPとWPのバグなどの関係を探り
・再びPHP7.2のテスト環境で実行したところ、前回は出力されなかったエラーメーッセージが表示される→MySQL5.7にアップグレードの影響?
・ステージングサーバの環境を、PHP5.6でWP5.2.1を検証するしかないのか?
と悩んでいたところ、ようやく(遅すぎ!)デバックをONにしたのだった。
MySQL5.7のアップデート時にwp-config.phpを変更したので、ついでにデバックも有効にしていたことをすっかり忘れていた。
define(‘WP_DEBUG’, false) → define(‘WP_DEBUG’, true)
テスト環境のファイルマネージャーで、wp-config.phpのデバッグモードをfalseに変更したところ、エラーメーッセージは消えて、RSSフィードも正しく表示され、各管理ページにでていたエラーメッセージも出力されなくなった。
けれど、表示や編集に問題がないものの、警告メーッセージがいろいろある中での運用はいかがなものかと思う。
うーん、しかしまた躊躇しているとどんどん環境が変わってしまうのである。
問題解決に参考になった記事:RSSフィード関連のWP問題:[WordPress] なぜ修正されない? PHP Warning: A non-numeric value encountered in Date.php on line 694