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」が使われていました。

さっそく、これらを「break」に書きなおします。

早速メールフォームを確認すると、、、やった♪ 治ってますね♪

以上、めでたしめでたし、、と言いたい処ですが、、、。

原因を更に掘り下げていく

ここで、ふと思いました。「エックスサーバー社が、この現象に気が付いてないのか?? いや、そんな訳ないよな。。」。そこで、サーバーパネルを確認してみました。あ!これか? バージョン1.1.0は古いものらしく、アップデートリンクが表示されています。

すぐさまアップデートを、、、と、危ない危ない(;・∀・)。 注意事項はちゃんと読みましょうね♪ バックアップをとらなければ。。

私はターミナルエミュレーターを使って、直接、ディレクトリごとコピーしちゃいました。

よしバックアップは取ったので、アップデートしちゃいましょう。

さぁ、これでWarning現象が解消されたか? さっそくメールフォームを見てみました。。。

よし治ってる(*´ω`)♪ 実は念の為、Xserverのカスタマーサポートにも本件を問い合わせてあります。基本的に、どちらの対応をして頂いても良いそうなのですが、「自分でメールフォームのプログラム自体を編集(カスタマイズ)された場合におけるサポートは行っておらず、何かしらの問題が生じた場合のご案内をいたしかねます。」との回答でした。当然ですよね。ちなみにメールフォームのver1.1.0とver1.2.0のdiffをとってみた所、色々と他のファイルも変更されている様です。ですので1.2.0にバージョンアップする事で問題解決する方が正解でしょう。ただし、くれぐれもバックアップは取ってくださいね。場合によっては、せっかくカスタマイズした内容が消滅するなーんて事もありえます。

ご興味があれば以下の記事も参照ください♪
Print Friendly, PDF & Email