先日、運営しているブログの1つを確認したところ、エラーメッセージが出てログインできなくなっていました。
そのブログはWordPressで作ったもので、こんなメッセージが出ていました。
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/××××/wp-content/plugins/all-in-one-seo- pack/modules/aioseop_opengraph.php on line 825
Warning: Cannot modify header information - headers already sent by (output started at /home/××××/wp-content/plugins/all-in-one-seo-pack/modules /aioseop_opengraph.php:825) in [home/××××/wp-includes/pluggable.php on line 1183
このエラーメッセージをみると、「wp-content/plugins/~」とあり、どうやらプラグインが影響しているもようです。
この場合は「all-in-one-seo-pack」ですね。このプラグインの動作を停止すれば、エラーを解消できる可能性があります。
……が、現状、WordPressにログインないので、ダッシュボードからプラグインを停止することはできません。
というわけで対策してみました。
作業の概要
実際に作業してみてわかったのですが、今回の問題は、次の2つが原因だったもようです。
- プラグインによるエラー
- PHPのバージョン違いによるエラー
私は、1だけだと思っていたので次に紹介する「対策1」を行ってみました。
が、それで1の問題が解消すると、今度は2のエラーがでました。というわけで続いて「対策2」を行いました。
作業を振り返ってみると、最初から「対策2」だけでどちらも解消できた可能性があります。
が、同じ症状で困っている方もいるかもしれませんので、「対策1」「対策2」の両方を記載していきます。
対策1 プラグインのフォルダ名を変更
エラーメッセージをみると、プラグインが存在する階層が書かれています。この場合は「home/××××/wp-content/plugins/~」ですね。
というわけで、さくらのレンタルサーバのコントロールパネルから、ファイルマネージャーとすすみます。
そして、そのWordPressをインストールしたフォルダの「/wp-content/plugins/」を開きます。
そこで、エラーの原因となっているプラグインを探します。
ネットで検索したところ、原因となっているプラグインのフォルダ名を変更すると、エラーを解消できる可能性があるとのこと。
要は、フォルダ名を変えることで、プラグインを仮で停止できるわけですね。
というわけで、後ろに適当な数字をつけて「all-in-one-seo-pack2」としてみました。これでこのプラグインの動作は停止するはず。
そして、ブログにアクセスしてみると……ありゃ、新たなエラーメッセージが。
Warning: Illegal string offset ‘remember' in [home/××××/wp-includes/user.php on line 39
Warning: Cannot assign an empty string to a string offset in [home/××××/wp-includes/user.php on line 39
Warning: Illegal string offset 'user_login' in [home/××××/wp-includes/user.php on line 54
Fatal error: Uncaught Error: Cannot create references to/from string offsets in /home/××××/wp—includes/user.php:54 Stack trace: #0 /home/××××/wp-login.php(775): wp_signon(", ") #1 {main} thrown in /home/××××/wp-includes/user.php on line 54
プラグイン関連のエラーメッセージは消えましたが、今度は「Warning: Illegal string offset~」という警告に変わりました。
これは、PHPのバージョンの違いで発生するエラーのようです。
調べてみると、このエラーが出た場合は「wp-login-php」を書き換えることで解消できるとのことで、さっそくやってみました。
書き換えに関しては、こちらのサイト様を参考にさせていただきました。
対策2 wp-login-phpを書き換え
「wp-login-php」を開き、次の部分を探します。
$user = wp_signon( '', $secure_cookie );
キーボードのCtrl+Fキーで検索すると、すぐにみつかりました。
これを次のように書き換えます。
$user = wp_signon( array(), $secure_cookie );
あとはこのまま保存すればOKです。
これでWordPressにログインできるようになりました!
その後にやること
WordPressにログインができたら、次のことをします。
- 必要に応じてWordPressのバージョンを上げる
- 問題になったプラグインをアップデート、または停止する
- プラグインのフォルダ名を変えた場合は、ファイルマネージャーから元に戻しておく
私の場合はこれでエラーがすべて消えました。
まとめ
今回はエラーメッセージが出てWordPressにログインできない場合の対処法をお届けしました。
WordPressにログインできれば、プラグインも停止できますので、最初から対処法2をとってもよかったかもしれません。よかったら参考にしてみてください。