以前、お世話になっている広告代理店様より連絡があり「弊社で納品しましたサイトなのですが、クライアント様より連絡があり、お問合せページ冒頭に見た事もない英文が出ている、これはなんだ!と連絡がありまして。どうしたらよいかわからず一度確認いただく事は可能でしょうか・・」と突然のご相談。確認すると
Warning: Undefined variable 〇〇〇〇 in ▲▲▲▲ on line 00
これは読んで字のごとく、Undefined variable = 参照しようとした変数○○○○は、未定義です。とPHPが気をつかって教えてくれています。ではなぜ急にこのようなエラーが表示したのでしょう。
結論からいいますと、クライアント様が連絡なしに契約されているレンタルサーバのPHPのバージョンを7から8にされたのが原因です。納品されたタイミングはPHP7の段階、つまり「プログラム=書き方に対して優しかった」しかし、PHP8はPHP7と違い、「書き方に対して、より厳格となった」という事で伝わるかと思います。
ご相談のあったお問合せフォームはわりとシンプルでしたので、入力ページからinputにてpostされた確認ページ内のif文に、isset=変数がセットされているかを付け加える処理と入力ページの空処理にempty関数で対処となりました。
if($変数){
//処理
}
対処方法
if(isset($変数)){
//処理
}
【 入力ページ 空処理 】
if(($error['要素名']) {
//処理
});
対処方法
if(!empty($error['要素名']) { //empty関数に省略形「!」 を加えて、エラー構文処理
//処理
});
こちらのご相談はこれだけですみましたが、バージョンアップにより他にも変更された箇所が多々
ありますので、こちらのPHPマニュアルをご参考にしてください。
いかがでしたでしょうか。今回はPHP7からPHP8へのバージョンアップにより起こりえる基本エラーについて、ご紹介させていただきました。案件管理や顧客管理エンジンなりレガシーなシステムのまま使用されている企業様にとっては、今後もPHP9など引き続きバージョンアップによりリニューアルに近い、ハイレベルな調整は多々あると思われます。(中・大規模システムであれば、レンタルサーバはしようしていないと思いますが。)うちの管理システムはどうなのかなと思われる方がもしおりましたら、ご担当されたエンジニアにご連絡・ご質問されることをおススメいたします。
以上となります。できる限りわかりやすく伝えようとしても書くのは難しいです。
コードや記事の書き方について気になるところがあれば、アドバイスいただけると嬉しいです。
要件定義からブラッシュアップ/実装運用まで一貫して担当。また内部対策を中心に、GTM・GA4・Looker Studioと分析・改善案の策定も進めています。北緯43度マルチエンジニア