WordPressに突然ログインできなくなった

2019年7月7日

エラー: 予期しない出力により Cookies がブロックされました

ブラウザにブックマークしているサイトアドレス/wp-adminでは、

Warning: Cannot modify header information – headers already sent by (output started at /…

Warning: Cannot modify header information – headers already sent by (output started at /…

Warning: Cannot modify header information – headers already sent by (output started at /…

…以下は、特定のプラグインのファイル名と/wp-includes/pomo/translations.phpなどのエラーメッセージのみが表示されるだけ。ユーザー名とパスワードを入力する画面すら出てこない。

サイトアドレス/wp-login.phpにリネームすると、下の画面が出てきた。エラーメッセージもそのままで消えない。

ログインエラーメッセージ

ユーザー名とパスワードを入力しても、ログインできない。管理画面に入れない。ユーザー名やパスワードの入力間違いでもない。

ftpアクセスで接続し、エラーメッセージの該当phpファイルを確認しても改ざんされたような形跡もない。該当ファイルをバックアップから更新してみても直らない。phpMyAdminでデータベースにアクセスして、最適化や修復をしてみても直らない。

ヘッダーをモディファイなんかしてないし・・・。レスポンスヘッダーの事だろうなと。

不正アクセスや外部からの改ざんではありませんでした。内部からの操作ミスによる一種の改ざんでしたけれど、、、泣。

予兆はあった

僕のこのサイトで発生したことではありません。共同運営している他のサイトでのことです。

WordPressの知識のない人にも、ある程度の仕事をしてもらわなければならない。編集者権限を与えて「ここだけはしっかり覚えて役割分担を果たしてね。他のところは絶対にさわったらダメ。」と念を押しておいても興味本位で触ってしまう。

僕よりも年上や目上の人はWordPressの”権限”を役職やポストと勘違いするのか、全く知識もないのに投稿者権限では納得してくれない。
僕は何を言われてもWordPressの”権限”を与えないから、共同管理者に言い寄ってWordPressの権限を上げてしまう。何度かカスタマイズの設定を勝手に変えていた。
直前に触ってしまった箇所を報告してくれれば修正もしやすい。しかしプライドもあって黙っているから、修正するほうは大変だ。

原因はおそらくCSV一括アップロードの際、アップロードするCSVファイルの記入ミスに依るもの。

ログイン画面には異常はなかったけれど、WEBサイトの一部のページに上記のエラーメッセージが表示されるようになっていた。ログイン出来なくなった&ログイン画面にもエラーメッセージが表示されたのは、それから数日後のことです。

プラグインを沢山インストールしていて、あれやこれやとやっていると、相互干渉で同様のエラーメッセージが表示され、ログイン出来なくなる現象が発生する場合もあるようです。また、テーマやサーバーのphpバージョンアップが原因となる場合も。

wp-config.phpファイルを書き換えて更新すると直ったという報告もあるので試してみたところ、これでも直りませんでした。wp-config.phpを編集する際は、必ず文字コードはUTF-8のBOM無しを選択。

テキストエディタにはNotePad++を使っています。

修正方法

wp-config.phpに下記8行を追記。これで問題なくログインできるようになり、エラーメッセージも消えました。

define('AUTH_KEY’, 'put your unique phrase here’);
define('SECURE_AUTH_KEY’, 'put your unique phrase here’);
define('LOGGED_IN_KEY’, 'put your unique phrase here’);
define('NONCE_KEY’, 'put your unique phrase here’);
define('AUTH_SALT’, 'put your unique phrase here’);
define('SECURE_AUTH_SALT’, 'put your unique phrase here’);
define('LOGGED_IN_SALT’, 'put your unique phrase here’);
define('NONCE_SALT’, 'put your unique phrase here’);

ふう、大変だったけど、めでたしめでたし。頑張って必死で直していたので、エラーメッセージのスクリーンキャプチャはひとつだけ。参考になるかどうか分かりませんが、忘備録も兼ねて投稿しておきます。