- 公開日: 2018年04月13日
WordPressにログインできなくなる9個のケースと対処法
普段利用しているWordPressの管理画面へのログイン作業。自動化されている方も多いかと思いますが、ちょっとしたことでログインできなくなり、途方に暮れてしまう方が多いようです。
一般に普段通りにシステムが使えない、動かない状態をIT業界では「障害」もっと広く言えば「インシデント」という言い方をします。本記事ではWordPressのログイン失敗という「障害」を通して、その対応方法の基本的な流れについて解説していきます。
システムが正常稼働しているかの確認
まず確認すべきはレンタルサーバを利用している場合はレンタルサーバ会社からのメール、社内システムなどであれば社内の管理者からのメールです。そもそもログインしようとしている日時にWordPressが動いているサーバは正常に稼働しているでしょうか。
ここで解決できれば、設定の変更など最小限の手間で解決することができます。
メンテナンスの案内が来ていた
実は、いちばん多いのがこのパターンです。サーバ機能の増強や再起動など計画的にサーバが止まることがあります。 この時はもちろんログインはできなくなりますし、サイト自体も見えなくなっています。ただメンテナンスは一般的に計画して行うものなので、数週間前には案内が届いているはずです。普段からこうしたメールには敏感になるようにしましょう。
ログインできるまで待つしかありませんが、サイト自体が見えないとサービスへの信頼性が落ちてしまうので、あらかじめその時間帯にメンテナンスを行うため閲覧できなくなる旨をSNSやメール、サイトのトップページに記載して告知しておきましょう。
例えば、以下のようなメールが届いていないか、自分が使っているサーバが対象になっているかどうかをチェックしましょう。
WordPressのバージョンが行われていた
WordPress特有の事象です。WordPressは他のフレームワークに比べるとバージョンアップの頻度が高く、また「自動設定」にしていると自動でバージョンアップされます。
この場合、導入しているプラグインやテーマ、カスタマイズした箇所が新しいバージョンに適合しておらず、ログイン操作が正常に完了できなくなる場合があります。対処の方法は下記のバージョンアップの場合を参照ください。
障害発生中であった
極めてまれですがとても厄介なパターンです。レンタルサーバもしくは社内のサーバが何らかの理由で正常に動かなくなっている場合です。自分で復旧させる手段は無く、メンテナンスと違っていつ起こるかわかりません。大抵は1日かからずに復旧しますが、場合によっては2-3日かかったり、過去数日分のデータが消えてしまうことがあります。
多くの場合ログインだけでなくサイト自体も見えなくなっているので、取り急ぎSNSやTwitter、メールアドレスがわかるのであればメールなどで障害であることをユーザに伝えましょう。
その後はこまめにレンタルサーバ会社や管理者に問い合わせを行い、復旧の目途を確認しましょう。
一例として、サーバ障害は下記のように表示されます。(例はXSERVERの障害・メンテナンス情報のページ)
クライアント側の確認
システムの異常が確認できない場合は、認証しようとしているクライアント側を疑ってみましょう。サーバですと接続するユーザ全てに影響が出ますが、クライアント側であれば影響はつかっているPCだけなので影響範囲はより軽微になります。
入力しているパスワードの大文字小文字はあっているか
一般的にWindowsではアルファベットの大文字小文字を区別しない場合が多いのですが、パスワードでは区別されることがほとんどです。特によくありがちなのが「Caps Lock」です。
「Caps Lock」とは入力文字がすべて大文字になるモードでキーボードで「Shift」キーと「Caps Lock」キーを同時に押すことで、この入力モードになります。タイプミスなどで「Caps Lock」モードになっている場合でも、パスワードは「*」や「●」で表示されているため気がつきにくいです。
「Caps Lock」のモードになると目印としてキーボードに小さなランプが点きます。もし点いていたら「Shift」キーと「Caps Lock」キーを同時に押してモードを解除しましょう。
Cookieの影響
CookieとはサイトのプログラムがアクセスしてきたクライアントPCに書き込んでおく情報です。 一般的なのはパスワードとID、ログイン日時などをクライアント側に保存しておき、次にアクセスしてきたときにサーバはクライアントのCookieから以前の入力情報を確認し、自動ログインさせたり、ログイン画面に誘導したりします。
一度入力した情報を記憶させておくことでユーザが再入力する手間を省くために使用されます。
このユーザの機能が問題になる場合があります。パスワードを変更した場合、サーバ側は新しいパスワードに変更されていますが、Cookieの情報は古いままになってしまい、ログイン失敗となるのです。この場合新しいパスワードを書き込んでも、サーバはCookieを先に読込んでログイン処理をしてしまうため、いつまでたっても解決しません。
そこで行う必要があるのがCookieの消去です。ブラウザによって消去の方法は異なりますが、本記事ではChromeの消去方法を紹介いたします。
- 右上の三つの点のアイコンをクリックするとメニューが表示されます。「その他ツール」を選択し、さらに表示されるメニューから「閲覧履歴を消去」を選択してください。
- 表示されるウィンドウで「基本」を選択し、「Cookieと他のサイトデータ」にチェックを入れ、「データを消去」ボタンを押下します。
- これでCookieは削除されますので、改めてログインページに戻り、入力をしてください。
キャッシュの影響
キャッシュはCookieに似たもので同じようにクライアントPCに残っている情報です。異なるのは入力項目だけでなく、画像など多くの情報を残していることです。Cookieは入力する手間を省く目的で使用されるのに対して、キャッシュは画像の読み込みなどを省いて表示を早くする目的で使用されているためです。
しかし同様にパスワードを変更した場合や画像を変更した場合に、使用されるデータとしてキャッシュが利用されてしまい、新しく入力した内容や変更された画像がうまく反映されないことがあり、ログイン失敗につながることがあります。
この場合もキャッシュの削除により対応することができます。ブラウザによって消去の方法が異なりますが、本記事ではChromeの消去法を紹介いたします。
- 右上の三つの点のアイコンをクリックするとメニューが表示されます。「その他ツール」を選択し、さらに表示されるメニューから「閲覧履歴を消去」を選択してください。
- 表示されるウィンドウで「基本」を選択し、「キャッシュされた画像とファイル」にチェックを入れ、「データを消去」ボタンを押下します。
- これでキャッシュは削除されますので、改めてログインページに戻り、入力をしてください。
サーバ側の確認
多くの場合は上記でログインできると思いますが、それでもログインできない場合は大本のサーバ側を疑う必要が出てきます。ただしサーバ側は設定を変更することにより、正常に表示されているユーザ側にも影響が出る可能性があるため、慎重に行いましょう。具体的には、以下の内容を行う必要があります。
変更する場合は必ず変更内容を紙やホワイトボードに書き留めていつでも元に戻せるようにしておくこと
変更箇所が多いファイルについては、バックアップを取っておき、ファイル置換によりすばやく元に戻せるようにしておくこと
常にユーザ側画面を見られる環境を用意し、変更した場合に表示がおかしくなっていないか確認すること
ユーザ側画面に問題がないのであれば、アクセスの少ない時間帯にメンテナンス予告を出しておき、その時間に実施する
ログインできないことと、ユーザ側画面がおかしくなりサービス停止することの優先順位をきちんと考えておく必要があります。更新する内容にもよりますが、通常はユーザ側画面を優先させるはずです。また復旧の記録を取ることで次に同じ失敗(「障害」)が発生したときの手掛かりになることがあります。
大抵の場合はユーザ側画面がおかしくないがログインできない、という状況だと思いますので、アクセスの少ない時間帯(これはサービスによって異なると思います)に1-2時間程度メンテナンスのためサービスが停止する旨のアナウンスをし、メンテナンス時間になったら全ての画面へのアクセスがメンテナンス画面へ移動するように設定し、作業を行います。
全ての画面へのアクセスをメンテナンス画面(Sorryページと言います)に移動するための設定方法は以下になります。アナウンスまでにはできるだけ時間があった方がいいでしょう。(目安として一週間~一カ月程度)
- メンテナンス中に表示するSorryページを作成する。(ここではmaintenance.htmlとします。)
以下が例になります。
<html>
<head>
<meta charset="utf-8">
<title>メンテナンス中</title>
</head>
<body>
<h1>現在メンテナンス中です。20XX年〇月〇日02:00までおまちください。</h1>
</body>
</html>
- FTPクラインとソフトでWordPressがインストールされているフォルダを見ると、「.htaccess」というファイルがあるのでダウンロードして、テキストエディタで開きます。下記は特にカスタマイズなどをしていない最初の状態です。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
# END WordPress
- この後に以下の内容を追記して保存してください。
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx ← クライアントPCのIPアドレス
RewriteRule ^.*$ - [R=503,L]
</IfModule>
なお、クライアントPCのIPアドレスはこちらを開くと調べられます。このIPから接続したクライアントPCのみSorryページに飛ばされず、[WordPressのアドレス]/wp-login.php
からログインをすることができます。
二つのファイルができたら、下記の手順によりユーザ側画面をメンテナンス中にして、ログインできない問題の対応を行います。ログインに対する調査・対応以外はFTPクライアントで行う作業になります。
maintenance.htmlをWordPressがインストールされているフォルダにアップロードします。
サーバ側にある.htaccessファイルを.htaccess.oldに名前を変更します。
クライアント側で編集した.htaccessをアップロードします。
どのページを開いていもmaintenance.htmlが表示されることを確認します。
ログインができない状態を調査・対応し、ログインできることを確認します。
メンテンナンス中に使用していた.htaccessをサーバから削除し、2.で変更した.htaccess.oldを.htaccessに戻します。
正常にページが開けることを確認します。
上記作業を踏まえて、WordPressのログインができない原因の調査と対応を行いましょう。
wp-config.phpファイルの確認
データベースサーバと正常に接続できているか、設定を確認します。間違っている場合「データベース接続確立エラー」とユーザ側画面に表示されます。もしこのような場合は、下記のようにデータベースの「ホスト名(IP)」「データベース名」「ユーザ名」「パスワード」を確認し、修正してください。
プラグイン、テーマに不具合がある場合
WordPress自体がバージョンアップした場合、それに応じてプラグインやテーマもバージョンアップする必要があります。(バージョンアップの内容によっては、しなくていい場合もあります。)
WordPress自体のバージョンアップは設定やレンタルサーバ会社の運用方針により自動的に行われますが、プラグインやテーマは管理者が行う必要があり、ここで不整合が発生するとエラーが発生します。エラーの内容は不整合の内容により変わりますが、例えばユーザ側画面は普通に見えるのに管理画面が見えなくなる、ログインができなくなることは比較的よく発生します。
この場合は、一時的にプラグインやテーマをすべて無効化した上でログインし、一つ一つ有効化して原因を確認しましょう。
以下が手順になります。
- FTPクライアントからWordPressのインストールされているフォルダに移動し、さらにwp-contentフォルダに移動する。
- 「plugins」フォルダの名前を変更する。(例では「plugins_」とアンダーバーを最後につけています。)これですべてのプラグインが読み込まれなくなります。
- 「themes」フォルダを開き、使用しているテンプレートのフォルダ(テンプレート名と同じです)の名前を変更する。(例では「_」とアンダーバーを最後につけています。)これでテーマが読み込まれなくなり、自動的にデフォルトテーマである「WordPress Twenty Seventeen テーマ」に変更されます。
- [ワードプレスのアドレス]/wp-login.phpからログインできることを確認してください。
- ログインできたら、FTPクライアントから再度フォルダ名を「plugins_」から「plugins」に変更し、一つずつ有効化してログインできるかを試してください。ログインできなくなったらそのプラグインが問題です。無効化するか、バージョンアップしたものがないか確認してください。(下記はplugins_のままでプラグインを表示したときです。プラグインが読み取れず「現在、利用可能なプラグインはないようです」と表示されています。) フォルダ名をpluginsに直すとプラグインが表示され、アップデートできるものが表示されるのでアップデートしましょう。
- すべて有効化しても問題ないようであれば、次はテーマを試してみましょう。もし、ログインできなくなればそのテーマが問題です。テーマを変更するか、バージョンアップしたものがないか確認してください。(下記は戻す前です。「使用中のテーマが壊れているため、デフォルトのテーマに戻します」と表示されます。一応アンダーバーをつけたものが別のテーマとして認識されて表示されますが、フォルダ名を戻したうえで再読み込みし、有効化しましょう。)
ユーザ管理のデータベースを確認する(パスワードの再設定)
ここまでで解決しない場合はさらに疑う範囲を広げデータベースを見ます。具体的にはデータベースに記録されているパスワードを書き換え、パスワードを再設定します。これはパスワードを忘れてしまった場合にも有効です。
この場合、FTPクライアントではなく、データベースを視覚的に操作・確認できるphpMyAdminというパッケージを利用します。
レンタルサーバであればおそらくPHPとMySQLを導入する際に一緒に導入していると思いますので、ここではphpMyAdminにはログインできるものとします(レンタルサーバ会社によっては別ツールとして提供されている場合もあります)。なおデータベースは投稿データの他、WordPressの動作環境などすべての情報が保存されているので慎重に操作しましょう。
まず左のデータベースを選択すると、使用されているテーブル(wp_から始まるもの)がずらっと表示されます。一番下の方にあるwp_usersを選択してください。 右側のタブで「表示」を選択するとデータベースの管理者のユーザ名やパスワードが出てきます。パスワードは暗号化されているためおかしな文字列になっていると思います。ログインしたいユーザ名の行で編集ボタン(鉛筆アイコン)を押下します。 編集画面に切り替わります。user_passのところで「関数」に「MD5」、「値」に今後使用するパスワードを打ち込んでください。この時はそのまま表示されていますが、実行ボタンを押下することで、データベースに保存される時と表示する際にPHPプログラムが実行される時の二回にわたって自動的に暗号化され、次に開いたときには暗号化されたものが表示されるようになります。 キャッシュ、Cookieの削除をして、先ほど打ち込んだパスワードでログインできるか確認してください。
\一流デザイナーのスキルが身に付く/
その他
代表的なWordPressのログインエラーを通して、システムの状況確認、クライアントの確認、WordPressの設定確認、データベースの確認と次第に重要な部分へ掘り下げていく障害対応を行いました。 他にも様々な理由があり、日本語の公式ページにも様々な事例が記載されています。
慣れてくると、こうしたドキュメントを見る前にエラー内容をみて、対応できるようにもなります。エラー内容は
wp-config.phpファイルの80-90行目付近にある、define('WP_DEBUG', false);
をdefine('WP_DEBUG', true);
に書き換えます。
これはDEBUG(デバッグとよみます)モードのON、OFFを切り替えるものです。デバッグとはバグ(IT用語でいうエラー)を取り除く作業のことでデバッグモードをONにすることで、エラー内容が表示されるようになります。
通常はセキュリティ上、エラーが発生してもその内容を表示しないような設定になっています。エラー内容に含まれるディレクトリの構造やプログラム名、データベース名などが表示されるとそれをもとに不正なプログラムを作成しやすくなるためです。よってこのモードでエラーを特定し解決できた後は、元に戻すのを忘れないようにしましょう。
最後に日本語の公式ページにはないのですが、筆者が経験したことがある例を挙げます。
最初からWordPressがインストールされているレンタルサーバに多いのですが、数回ログインに失敗すると悪意のあるユーザからの不正ログインと判断して、WordPressとは別の機能を利用してアカウントをロックしてしまうことがあります。この場合はレンタルサーバ会社に連絡し解除してもらわないと正しいパスワードを入力してもログインできなくなります。
アクセスが非常に多いサイトにありがちですが、データベースやアップロードファイルによりディスクの残り容量が0になってしまうときがあります。この場合WordPressが出力しているログの書き込みが失敗するためにログインができなくなります。この場合は、古いファイルをダウンロードして消去するかレンタルサーバ会社との契約を大容量のものに変更する必要があります。
- この記事を書いた人
- 大野幸太郎