急にWordpressにログインできなくなった時の原因と対処法
(ユーザー名とパスワードは間違ってないのに)
主なエラーメッセージはこんな感じ。
Warning: Cannot modify header information – headers already sent by (output started at /…サーバーパス/wp-includes/session.php:1) in /…サーバーパス/wp-login.php on line 425
最後の数字は色々ある。
エラー:予期しない出力により Cookies がブロックされました。ヘルプが必要な場合はこちらのドキュメンテーションを読むか、サポートフォーラムをご利用下さい。
ログインエラーの原因の特定
このエラーが出ている場合の原因を特定すれば、それぞれ対処できる。またブログのデータそのものは壊れていないので、心配はいらない。
1. functions.php の中の改行。
2. functions.php の中の echo が原因。
3. wp-config.php を UTF-8(BOMあり) で保存してしまった。
4. php.ini の設定が原因。
5. 外部からの悪意のある攻撃で nav-menu.php が書き換えられた。
1. 2. 3. については、自分でphpファイルを操作したり、テンプレートをカスタマイズした場合に発生する。
4. は、自分で設定を変更する、または自分で設定しなくても、サーバーの仕様が運営会社によって勝手に変更された場合に発生。
5. は、最近全然使ってなかったけど久しぶりにログインしようと思ったら、といった場合、つまりWordpressのバージョンが最新じゃない時に起こりやすい(特にWordpress4.4以前)。
1. functions.phpの中の改行が原因の場合の対処法
functions.phpの中の余分な改行、もしくは、header(“Location:….”); の前に改行が入ってるとダメ。
解決法 → functions.phpの該当しそうな改行を片っ端から消す。
ログインできないので、管理画面からではなく、FTPソフトなどを使って/wp-content/themes/テーマ名/functions.php のファイルを直接編集してアップロードしなおす必要がある。
2. functions.phpの中のechoが原因。
header(“Location:…”); の前に echo があるとダメ。
解決法 → 1.の時と同じように、ファイルを直接修正する。
3. wp-config.php を UTF-8(BOMあり) で保存してしまった。
何らかの理由で、wp-config.php を編集して上書き保存する時に UTF-8(BOMあり) で保存してしまうことが原因。
解決法 → wp-config.php を UTF-8 で保存しなおす。
もちろん管理画面からではなくFTPソフトなどを使って wp-config.php のファイルを直接保存しなおしてアップロードしなおす必要がある。
4. php.ini の設定が原因。
自分で設定を変更した場合はもちろんだが、サーバーの運営会社がメンテナンスなどを理由に勝手に変更する場合もある。
この場合は、Wordpressは関係ないので、サーバーにログインして、 php.ini の設定で output_buffering = Off となっていたら、output_buffering = On にすると解決する。
サーバーによっては、そもそも php.ini の設定ができない場合もあるので、カスタマーセンターなどに問い合わせてもいいかもしれない。
5. 外部からの悪意のある攻撃で nav-menu.php が書き換えられた。
解決法 → /wp-includes/nav-menu.php と /wp-admin/includes/nav-menu.php の2つのファイルを確認し、 istart と検索して、該当箇所を削除。
詳しい削除方法はこちらの外部からの攻撃でnav-menu.phpが書き換えられた場合の対処法を参照。
それでもログインできない場合
最終手段。
新しいWordpressをダウンロードしてきて、Wordpressフォルダを丸ごとFTPで再アップロードする。
記事内容などはデータベースに格納されているので、丸ごと再アップロードしてもブログは無事だ。
ただし、以下のファイルとフォルダだけはアップロードしない事!
WordPressのフォルダ直下にある .htaccess と wp-config.php
/wp-content/themes/今使ってるテーマのフォルダ/
これでどんな問題があってもログインできるようになる。
逆に言うと、これでもダメな場合は、 .htaccess wp-config.php 自分が使っているテーマ のどれかに問題があることになる。