ワードプレスサイトをPHP8以上にアップデートしたらPHP Warning: Creating default object from empty value もしくはエラーFatal error: Uncaught Error: Attempt to assign property “” on null が発生する場合の対処方法をご紹介いたします。

ワードプレスをPHP8にするとAttempt to assign propertyon null が発生しサイトの表示不全が発生

下記のコードは、PHP7~8まではWarning(警告)、PHP8からはエラーになってしまい、処理が強制停止されますのでサイトの表示不全が発生することがあります。

$value->mystring = "hello world!";

この理由は$valueというオブジェクト配列が初期化されていないのに値を代入しようとしたためで、かつPHP8以降では厳しくなってエラーとして処理を継続しないようになったからです。

ワードプレスの古いテーマや一部プラグインではこのようなコードが残っている場合があり、サーバーのPHPを8以上にするとエラーが顕在化してしまう事があります。

Fatal error: Uncaught Error: Attempt to assign property “” on nullの対処方法

オブジェクト配列を初期化してから値を代入するようにします。

$value = new stdClass;
$value->mystring = "hello world!";

オブジェクト配列が初期化されているか確かめてから代入する場合は下記のようになります。

if(! is_object($value)){
     $value = new stdClass;
}
$value->mystring = "hello world!";

php には配列かどうかだけを調べるis_array関数というものもありますがオブジェクト配列は否として判定されますので注意が必要となります。

ご参考になりましたら幸いです。

WordPress ワードプレスのPHP8適合の為のエラーの修正を経験豊かな技術者が代行いたします。お気軽にご相談・ご依頼お送りください。