PHPバージョンアップでエックスサーバーのメールフォームがエラーとなった場合の対処方法
警告が発生した現象と、その解析
今回WEBのチューニングを兼ね、久しぶりにPHPを「7.2.27」から推奨である「7.3.14」へバージョンアップしてみました。
すると、Σ(・□・;)あれ??。以前に紹介した「エックスサーバーの標準CGIでお問い合わせフォームを作成する方法」のメールフォームにWarningが発生するじゃありませんか。トホホ。orz…
こういう時は警告メッセージ「Warning: “continue" targeting switch is equivalent to “break". Did you mean to use “continue 2"?」をググれば大概原因がわかります。どうやらPHP7.3からbreakの代わりにcontinueを使うとWarningになるらしく、「php7.3のcontinue問題」と呼ばれている有名な現象らしいです。実際にソースコードを確認してみると、133行目から138行目にかけて、switch文のブレークに「continue」が使われていました。
早速メールフォームを確認すると、、、やった♪ 治ってますね♪
以上、めでたしめでたし、、と言いたい処ですが、、、。
原因を更に掘り下げていく
ここで、ふと思いました。「エックスサーバー社が、この現象に気が付いてないのか?? いや、そんな訳ないよな。。」。そこで、サーバーパネルを確認してみました。あ!これか? バージョン1.1.0は古いものらしく、アップデートリンクが表示されています。
すぐさまアップデートを、、、と、危ない危ない(;・∀・)。 注意事項はちゃんと読みましょうね♪ バックアップをとらなければ。。
私はターミナルエミュレーターを使って、直接、ディレクトリごとコピーしちゃいました。
よしバックアップは取ったので、アップデートしちゃいましょう。
さぁ、これでWarning現象が解消されたか? さっそくメールフォームを見てみました。。。
よし治ってる(*´ω`)♪ 実は念の為、Xserverのカスタマーサポートにも本件を問い合わせてあります。基本的に、どちらの対応をして頂いても良いそうなのですが、「自分でメールフォームのプログラム自体を編集(カスタマイズ)された場合におけるサポートは行っておらず、何かしらの問題が生じた場合のご案内をいたしかねます。」との回答でした。当然ですよね。ちなみにメールフォームのver1.1.0とver1.2.0のdiffをとってみた所、色々と他のファイルも変更されている様です。ですので1.2.0にバージョンアップする事で問題解決する方が正解でしょう。ただし、くれぐれもバックアップは取ってくださいね。場合によっては、せっかくカスタマイズした内容が消滅するなーんて事もありえます。
1.エックスサーバーでお問い合わせフォームを作成する方法
2.エックスサーバーのお問い合わせフォームのデザインをカスタマイズする方法
3.エックスサーバのメールフォームCGIを利用した場合のGoogleアナリティクスでのトラッキング方法