WordPressやPHPを使っていると、突然次のようなエラーに出くわすことがあります。
Fatal error: Array and string offset access syntax with curly braces is no longer supported in…
これは、PHPのバージョン7.4以降で非推奨となった構文を使っていることが原因です。
具体的には、配列や文字列の要素にアクセスする際に「波かっこ {}
」を使っているコードがある場合に発生します。
このエラーの原因は?
PHP 7.4からは、以下のような書き方がサポートされなくなりました。
phpコピーする編集する// 古い書き方(NG)
$string = "example";
$char = $string{2}; // PHP 7.4以降ではエラーになります
代わりに、角かっこ []
を使う必要があります。
phpコピーする編集する// 新しい書き方(OK)
$string = "example";
$char = $string[2]; // 正しい構文
同様に、配列のアクセスでも波かっこは使用できません。
解決方法
- エラーが発生しているファイルを確認
エラーメッセージには、どのファイルの何行目でエラーが出ているかが記載されています。まずはそのファイルを開きましょう。 - 波かっこ
{}
を角かっこ[]
に修正
例えば以下のようなコードを…
phpコピーする編集する$array = array("apple", "banana");
echo $array{0}; // NG
次のように書き換えます。
phpコピーする編集するecho $array[0]; // OK
- プラグインやテーマに原因がある場合は?
自作ではなく、外部のプラグインやテーマが原因でこのエラーが出ている場合、最新版にアップデートすることで解決することがあります。
もし更新が提供されていない場合は、開発元に問い合わせるか、自分でコードを書き換える必要があります(バックアップを忘れずに!)。
一時的な対処法(非推奨)
どうしても修正できない場合、PHPのバージョンを7.3以下に下げることで一時的にエラーを回避できます。
ただしこれはセキュリティ的におすすめできません。根本的にはコード修正が必要です。
まとめ
このエラーは、PHPの仕様変更により発生する「コードの古さ」が原因です。
今後もPHPは進化し続けるため、互換性のあるコードを書くことが重要です。
今回のような場合は、波かっこ {}
を角かっこ []
に書き換えるだけで多くの問題が解決します。
安全で安定した運用のためにも、定期的にコードのメンテナンスとPHPのバージョンチェックを行いましょう。