以前、このBLOGが動いているサーバのPHPを 7.4 から 8.1 へのアップデートを試みたところ、使っているテーマのAtahualpa 3.5.3 といくつかの古いプラグインでエラーが出まくってしまいました。けっこう影響範囲が大きかったので保留にしていたのですが、7.x系のサポート終了していることもあり、脆弱性対策も兼ねて 7.4 から 8.2 へのアップデート実施しました。
5.x 系から 7.x 系にアップデートした際は、主に非推奨になった関数の修正でしたが、今回は
Warning: Undefined variable ****** in *****
Warning: Undefined array key ****** in *****
の2つがぞろぞろと。
どうやら、PHP 8.x から未定義変数への参照や型違いの変数の計算なんかを厳密にみられるようになっていて、今まで暗黙のルールで動いていたものが軒並みエラーとなってしまったようです。
そんなわけで、ブラウザに表示されたページのソースを確認しつつPHPのソースを修正。
Warning が出ている参照部分を特定後、 変数の初期化や判断式に isset() を追記して回避したり、 (int)$num * 2 みたいにキャストを追記したりと地道に修正して無事動くようになりました。
— 追記 (2024/07/23) —
create_function もエラーになりますね。
こちらは、無名関数に書き直すことで回避できるようです。
add_action('widgets_init', create_function( '', 'return register_widget("hogehoge");' ) );
を
add_action( 'widgets_init', function() { return register_widget("hogehoge"); } );
の様に修正。
— 追記 (2024/07/24) —
動くようになったと思ったら、急にエラーが出て動かなくなった。
どうやら、古いプラグインでお作法にそぐわない記述があり、そこでエラーが発生しているらしい。
最近のコメント