こんにちわ
僕はConoHaWingで借りているサーバにこのブログで使うWordPressを置いて使っています。WordPressのバージョン更新があった場合はいつも更新通知が来ていてよしなに更新してくれているイメージがあったので、勝手にPHPバージョンも更新されているつもりでいたのですがそんなことはなかったので更新してみました。今回はその手順について書いていきたいと思います。
何故PHPVer7.4に気付いたのか
元々はPHPバージョンを更新しようと思っていたわけではなくて、全然別のことを調べたくてConoHaのサーバにSSH接続して見てた時に何気なくPHPバージョンを確認したら7.4… 古くない??と気づいたわけであります。
$ php -v
PHP 7.4.33 (cli) (built: Jan 23 2024 15:07:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
PHPバージョン更新手順
1.ConoHaのドキュメントに従ってPHPバージョンを「8.3」に変更する
下のリンクに従うだけで変更自体はすぐできます。自分でPHPのインストールなどする必要はなかったのでとても便利です。
2.バージョン変更の確認
PHPバージョンが7.4に気づいた時同様にPHPバージョンを確認しました
php -v
PHP 8.3.2 (cli) (built: Jan 17 2024 14:59:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.2, Copyright (c) Zend Technologies
with Zend OPcache v8.3.2, Copyright (c), by Zend Technologies
3. 実際の運用されている環境での確認
下の画像は実際に確認した時の画面なのですが、Warningが表示されてるようになっていました。。(自分のサイトでこの様なエラーが出ない場合は更新作業としてはこれで終わりになります)
Warning内容の抜き出した結果
Warning: Undefined array key "title" in /home/c3726346/public_html/dubakichi.com/wp-content/themes/mag_tcd036/widget/category_list.php on line 22
Warning: Undefined array key "exclude_cat_num" in /home/c3726346/public_html/dubakichi.com/wp-content/themes/mag_tcd036/widget/category_list.php on line 23
「Warning: Undefined array key」を対処する
僕はこのブログにMAGというテーマを使っているのですが、テーマが古い可能性であったり、そのテーマ内で起きているのでそもそも直していいのかライセンスを確認してみました。
1.テーマのPHPバージョン対応状況の確認
テーマのPHPバージョンへの対応状況と自分の環境が最新のテーマになっているか確認しました
確認結果は使用しているテーマのMAGはPHPバージョン8.3に対応していました
2. 最新テーマの適用状況の確認
テーマの適用状況をWordPressのテーマを追加画面に最新テーマのzipファイルを入れて確認しました
こちらも最新が適用されているので問題なさそう。
ということなので、テーマはPHPバージョン8.3に対応しているがWarningが出る様になっている状況。いわゆるただバグっている状況なのかなと思っています。
3.ライセンスの確認
僕のこのブログは制作代行とかではなく僕自身が使うためだけに用意しているものなので、そのライセンスについて確認しました
以下の画像の様に自由に改変して良いとのことなので修正して良いらしい
4.問題箇所を修正する
改めてWarning箇所の確認
Warning: Undefined array key "title" in /home/c3726346/public_html/dubakichi.com/wp-content/themes/mag_tcd036/widget/category_list.php on line 22
Warning: Undefined array key "exclude_cat_num" in /home/c3726346/public_html/dubakichi.com/wp-content/themes/mag_tcd036/widget/category_list.php on line 23
修正前
$title = apply_filters('widget_title', $instance['title']); // the widget title
$exclude_cat_num = $instance['exclude_cat_num']; // category id to exclude
修正後
$instanceのキーに対する存在確認を追加しただけ
$title = isset($instance['title']) ? apply_filters('widget_title', $instance['title']) : ""; // the widget title
$exclude_cat_num = isset($instance['exclude_cat_num']) ? $instance['exclude_cat_num'] : ""; // category id to exclude
今回の問題はPHP7.4からPHP8.0以降にバージョンアップしたことで、以下のPHPドキュメントにある「未定義の配列のキーを読み取ろうとした場合」に該当したものと思います。
PHP7.4からPHP8.0.xへの移行 下位互換性のない変更点
5.改めて修正後の動作確認
Warning表示が消えたことを確認。他のページもいくつか見てみたけど問題なさそうなのでOK。
おわりに
PHPのバージョンを上げるだけであれば、ConoHaがだいぶよしなにやってくれるところが多いので簡単でした。ただ、PHP8.0でバリデーションが厳密になった影響で今回は自分で修正しましたが本来テーマを作成されている会社さんに直してもらうのが良いかなとは思っています。次回のテーマ更新で修正されていなかったら毎回これを修正するのも面倒なので、お問合わせして直してもらおうかな、と思います。
でわでわ!
この記事へのコメントはありません。