PHP7.0にしたらPHP Fatal errorで見れなくなったでござる! ‘break’ not in the ‘loop’ or ‘switch’ context って!?

私のブログなんてゴミみたいなものですし、誰にも見に来ないし、
特に検証してないけど、PHP7早いって言うし、ま、アップデートしちゃいますかー!

・・・って気軽にアップデートしてみたら動かなくなりましたよ!
サイト見れなくなったし、管理画面にも入れないしで、もう詰んだ状態。。。
同タイミングでApacheからnginx+php-fpmに乗り換えたりしてたので、何が原因かわからなかったぜ!!
てか、nginxの設定が原因とかだと思ってたゼェーーーート!!

原因なによ。なんで動かなくなったのよ。

どうやらPHP7にしたら、 ループじゃないところで break や continue とか使っちゃいけないそうで!
例えば以下のとおり。

if ( $ifif === true ){
    return true;
    break;
}

私自身はこのような使い方はしたことなかったのですが、ワードプレスってば様々なプラグインがあるやん?
そのプラグインの一つがこの書き方してたんですねぇ。

私の場合は、ワードプレスのコメント欄がFacebook上でのコメントになるようなプラグインがあるのですが、それが原因でした。
よくよく見るとしばらく更新されておらず、かつ、このような書き方されてました。
まあ、私もほとんどブログ放置してたからアレなんですが。
しばらく更新されてないプラグインを使ってる方は要注意ですよ!!!

まずはプラグインを外す事を考える!

プラグインの使用を停止したい、、、だが管理画面も表示できない状態でしたので、データベースを直接いじる必要が有りました。
データベースへログインし、該当テーブル、該当レコードを探してみると、、、シリアライズされてるのね。
うんうん、、おやおや、、、想定しているプラグイン名が無いぞ?
・・・うむ、わけわからんし、ここはいじらんでおこう。。。
と心に決めました。

じゃあ、ソース修正してやんよ!

Fatal Errorのエラーメッセージをみて、エラーが起きた行を見てみると、、、
書いてます書いてますねー!
こいつをコメントアウトしてあげると・・・ほら、エラーは消えて画面表示されました!

だがしかし、コードを修正するって事は、その処理を通った場合に想定外の動きをする可能性も出てきちゃいますので、これぞ要注意ですね!あぶねーぞ!

結果的にどうしたのや。

そのプラグインがしばらく更新されていなかったという事もありましたので、プラグインの使用をやめてやりましたよ!
「私はこれでプラグインを辞めました!」

そんな感じで参照サイトはこちら。

[WordPress]データベースからプラグインを解除する
WordPress環境下にてPHP 7起こる「Fatal error: ‘break’ not in the ‘loop’ or ‘switch’ context」のようなエラーメッセージ

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。