blog ブログ

2024.01.30

PHP7からPHP8へのバージョンアップでエラー発生?

WEB#

asa

こんにちは!デザイナーのasaです。

弊社制作のサイトのほとんどをWordPressで構築しているのですが、その中でフォームについてはプラグイン「MW WP Form」を利用しています。
がしかし開発者のキタジマタカシ氏によると、2023年9月にプラグインのクローズに動くとのツイートが…

幸いプラグインのメンテナンスを「株式会社Webの相談所」さんが引き継いでくれるとのことで、すぐにプラグインが廃止されることはなさそうですが、あくまで脆弱性対応のみで新しい機能の追加等は行わず、MW WP Formの採用は控えるようアナウンスされてます。

詳しくはこちら

これを期に「Contact Form 7」に切り替えていくこととなったのですが、数が多いためなかなかに時間がかかりそう。さらに「MW WP Form」も2024年2月にはphp8.0以上が必須条件に…
弊社が管理しているサイトのほとんどがPHP7.4だったため、まずはPHPを8系にあげ、その後フォームを切り替えていくことにしました。

そこで試しにひとつサイトをPHP8にあげてみたところ、エラーが発生!?ということで今回はそんなphpのエラーについて紹介します。

PHP8で発生するエラーとは?

PHPバージョンアップによるエラーに対応してわかったのは、簡潔に言うと「記述のルールが厳しくなった」ということ。これまでPHP7では何となく見過ごされていたことが、PHP8では許してくれなくなりました。
もちろん非推奨になった関数がひっかかってエラーが発生するパターンもありますが、大半はこの厳しいルールによるものでした。

その中でもっとも多かったのが、変数や配列キーの未定義によるエラーです。

Warning: Undefined variable $〇〇 in…

よく見かけたのが、”Warning: Undefined variable $〇〇 in…”というエラー。これは$〇〇の変数が未定義ですよというエラーです。

$postID = get_query_var('postid');

get_query_var(‘postid’)で取得された値が未定義だった場合の処理がかかれていないためエラーとなります。なので未定義の場合の処理を追加してあげないといけません。

$postID = get_query_var('postid') ?? null;

get_query_var(‘postid’)の値が未定義だった場合、nullを代入して返すようにしました。

他にもisset関数を使って同様の処理を行うことも可能です。

$postID = isset(get_query_var('postid')) ? get_query_var('postid') : null;

先ほどと同じような処理で、get_query_var(‘postid’) の結果がセットされている場合はその値を、セットされていない場合は null が $postID に代入されます。

Warning: Undefined array key “〇〇” in…

こちらも変数未定義エラーと同様、”〇〇”の配列が存在しませんよという警告です。例えば

$_GET[‘recipe’]

これだとphp8ではエラーとなります。同じくisset関数を使って

if(isset($_GET[‘recipe’])){
  配列キーがあった場合の処理
}

特定の配列キーがあった場合だけ処理してくれるので、エラーを回避できます。

まとめ

php8へのバージョンアップは複数のサイトで行いましたが、ほぼ全てで何かしらのエラーが出ていました。今回紹介したエラー以外にも、非推奨となった関数を使用していたり、php8に対応していないプラグインがあったりとなかなか手のかかる作業となりました。特に古くから運用しているサイトほどエラーが多く、日々のメンテナンスが大事だということを改めて痛感した次第です。皆さんもメンテナンスには十分気をつけてください。

また弊社ではWEBやDTPの制作からマーケティングまでワンストップで対応していますので、お気軽にお問い合わせください。

posted article 投稿記事

  • 【CSS】カード型レイアウトは「flex」or「grid」どっちがいい?

    2024.06.15

    【CSS】カード型レイアウトは「flex」or「grid」どっちがいい?

    WEB
  • スライダーライブラリ「Splide」を使ってみた

    2024.04.10

    スライダーライブラリ「Splide」を使ってみた

    WEB
  • [初心者向け][CSS]flexbox3カラム配置+最後の行だけアイテム2つの時に左詰にするレイアウト

    2024.01.15

    [初心者向け][CSS]flexbox3カラム配置+最後の行だけアイテム2つの時に左詰にするレイアウト

    WEB
  • HINODE ICTlab CSS safariで透過が黒くなる!解決法

    2023.12.11

    [初心者向け][CSS]safariで透過が黒くなる!解決法

    WEB
View more

contact お問い合わせ・ご相談

制作のご依頼や予算のお見積りなど、まずはお気軽にお問い合わせください。

contact