ある日突然、他社レンタルサーバー内のWordPress管理画面にログインできなくなり、「利用できません」の表示が出る事例がございました。
幸いサイトの閲覧は問題ない状態でした。
同じ症状の方の助けになればと思い、備忘録を紹介させていただきます。
不具合の原因の調査・検証
まず、WordPress管理画面にログイン出来なくなった場合、色々な可能性が考えられます。
・パスワードを何度も間違えてアクセスが制限されている
・WordPress・プラグイン・テーマのアップデートに失敗した
・プラグインが干渉している
etc…
そのため、思い当たる対応を下記のように色々行いました。
・ログインURLをデフォルトから変更していたので戻してみる
・FTPで影響を及ぼしそうなプラグインをリネームして無効にする(セキュリティプラグインなど)
・wp-adminディレクトリにかけていたIP制限を解除する
・.htaccess、index.php内の記述の確認
しかし原因は特定できませんでした。
※プラグインはリネームすると無効になり、ネームを戻しても、管理画面で操作しない限り再度有効化されません。
サイトの表示崩れに繋がるので注意が必要です。
本番環境でさらに検証するのはリスキーだと考え、アプローチを変えて、同じ現象を再現してみる事にしました。
テスト環境で再現してみる
弊社はデータセンター・プロバイダーサービスを行っており、自社サーバーを持っております。
新しくサーバーを作り、本番環境のファイル・データベースをコピーして、全く同じテスト環境を作りました。
しかし、テスト環境を作成してみたところ、ログインできない不具合が再現しませんでした。
つまり本番環境だけ、ということはサーバーの問題ではないか?と当たりをつけます。
リカバリーモードを試す
次に、さらに原因を特定するため、サイト表示が崩れるので避けてきたリカバリーモードを試すことにしました。
wp-config.php内の
define( ‘WP_DEBUG’, false );
↓この記述の false を true に書き換えます。
define( ‘WP_DEBUG’, true );
すると、このエラーが表示されていました
WordPress データベースエラー: [INSERT, UPDATE command denied to user …
エラー文をGoogleで検索してみたところ、データベースの容量がいっぱいだったとの同じ症状の記事に辿り着きました。
WordPressの管理画面にログインできない(MySQLの容量オーバー)
↑こちらの記事を参考にさせていただきました。ありがとうございます。
サーバーの契約を確認したところ、データベースの全体の容量とは別に各データベース100MBの上限があり、容量がいっぱいになったときは、データベースの入力・編集・追加等の処理が行えなくなるとの記載がありました。
そして問題の起きているデータベースの容量を見ると、実際にその上限に達していることを確認しました。
データベースの容量制限が原因だった
データベースの容量がいっぱいなことが分かったので、容量の削減が必要になります。
phpMyAdminで不要なテーブルを削除する方法もございますが、リスクが伴いますので、データベースの最適化プラグイン(WP Optimizeなど)で対応することをオススメします。
容量上限のないテスト環境でデータベースを最適化し容量削減して、本番環境にデータベースを移し替えるなどの方法が安全かと思います。
(その際も本番にデータベースを増設して、wp-config.phpで使用データベースを切り替えるなどの方法をオススメします。)
ただし、いずれにしてもリスクを伴いますので、使用前にバックアップを取得するなど、充分お気をつけください。
データベースの容量を削減することで、ログインできるようになり、無事解決しました。
まとめ
今回のWordPress管理画面へのログイン不具合は、他社のレンタルサーバーのデータベース容量が各100MBまでと上限が低く、容量がいっぱいになっていたことが原因でした。
サーバーの容量に余裕があるか定期的に確認したり、バックアップを取得するなど、急な不具合に焦らないよう気を付けたいですね。
また、安いからという理由だけでレンタルサーバーを選んでいませんか?
サイトの規模にあったスペックか?サポート体制が整っているか?など、隅々まで確認して選択しましょう。
弊社ネディアではデータセンター・プロバイダーサービスを行っており、サイト・システム制作や保守管理サービスも行っていますので、分からない、上手くいかないなどがございましたら代行いたしますのでご連絡ください。
他にもネットワーク保守なども行っておりますので、ネットワークのことなら全てネディアにおまかせください。