WordPressの管理画面にアクセスできなくなるのは、非常に厄介な事態。ログインしようとしたら、「このページにアクセスする権限がありません」というメッセージが表示されることがあります。
このエラーを解決する方法はいくつかあり、根気強くトラブルシューティングを行えば、エラーを修正して、再度管理画面にアクセスできるようになります。
今回は「このページにアクセスする権限がありません」というエラーメッセージの概要と原因についてご説明した後、解決策を詳しくご紹介します。
「このページにアクセスする権限がありません」エラーの意味
この記事では「エラー」としていますが、「このページにアクセスする権限がありません」というメッセージは、どちらかというとセキュリティ対策のために表示されています。
このメッセージは、現在のユーザー権限の設定によって特定の領域へのアクセスが禁止されていることを意味します。
これは、ウェブサイトのバックエンド全体へのアクセスが必要になる管理者にとっては、問題になります。この現象は、テーマ、プラグイン、またはWordPressコアの更新直後によく見られます。
「このページにアクセスする権限がありません」メッセージが発生する原因はいくつかあり、自分が管理者であることをWordPressが認識していない。あるいはサイトのコアコード、テーマまたはプラグインの情報がデータベースの内容と一致しないことも考えられます。
他にも、wp-config.php fileファイルの情報が正しくない、PHPのバージョンが古いなども原因になり得ます。いずれにしても、このエラーによって管理画面全体または一部にアクセスできなくなります。
特に管理画面の「設定」ページにアクセスできない可能性が高く、解決するにはファイル転送プロトコル(FTP)またはphpMyAdminを使用する必要があります。トラブルシューティングを始める前に、必ずサイトをバックアップしておきましょう。
「このページにアクセスする権限がありません」エラーの原因特定は簡単ではありませんが、次のセクションで効果的な解決策をいくつかご紹介します。
WordPress の「このページにアクセスする権限がありません」を解決するには(11つの方法)
このエラーの原因は多数あるため、解決には時間がかかります。以下、さまざまな状況を考慮し、11種類の解決策をご紹介していきます。
1. WordPressサイトの以前のバージョンを復元する
WordPressの管理画面に再びアクセスできるようにするための手っ取り早い方法は、サイトを以前のバージョンに復元すること。更新などの変更が原因になっている可能性があるため、サイトを以前の状態に復元することで、問題を解決できるかもしれません。
Kinstaを利用している場合、この手順は非常に簡単です。MyKinstaでバックアップをワンクリックで復元することができます。
この解決策の懸念点としては、当然ながら最近の更新内容が削除されてしまうこと、そしてエラーを回避しながらその変更を加える方法を探さなければならないことです。
そのため、本番サイトではなくステージングサイトにバックアップを復元する手もあります。ステージング環境で変更内容を一つずつテストし、問題の原因を特定したら、それに応じてデータ復元し、サイトを修正することができます。
2. すべてのプラグインを無効にする
プラグインの追加または更新もよくある原因です。この場合は、プラグインを1つずつ無効にしてみましょう。
あるプラグインを無効にしてエラーが解消されたら、そのプラグインに原因がある証拠。必要でなければ削除し、そうでなければそのプラグインの問題をトラブルシューティングしていきます。
管理画面にまったくアクセスできない場合は、FileZillaなどのクライアントを使用してSFTPでサイトにアクセスしなければなりません。接続後は「wp-content」に移動し、「plugins」サブディレクトリを探します。
フォルダを開き、最後に追加したプラグインの名前を「plugin-name_old」などに変更します。それから、サイトに戻ってエラーが消えているかどうかを確認してください。エラーがまだ表示されている場合は、プラグインの名前を元に戻して、次のプラグインで同じ手順を繰り返します。
3. デフォルトテーマに変更する
テーマの更新または新規インストールも原因になり得ます。これを解決するベストな方法は、Twenty TwentyやTwenty Nineteenなどのデフォルトテーマに変更すること。
管理画面にアクセスできない場合は、またFTPを使用します。FileZillaでサーバーに接続し、「wp-content」>「themes」に移動します。
手順は、先ほどのプラグインの無効化とほぼ同じです。
使用中のテーマのフォルダ名を変更し、サイトに戻ってログインすると、「使用中のテーマが壊れているため、デフォルトのテーマに戻します」というメッセージが表示されます。
その後、テーマのトラブルシューティングを行いましょう。テーマは変更されますが、管理画面にはアクセスできるようになります。
4. 自分が管理者であることを確認する
もう1つ考えられる原因は、ユーザー役割が誤って変更され、管理者ではなくなっていること。このエラーは、マルチサイトのインストールでよく発生します。これが原因になっているかどうかを確認するには、phpMyAdminにアクセスして、wp_usersテーブルを探します。
自分のユーザー名を探して、IDを書き留めるなどします。次に、wp_usermetaテーブルに移動して、wp_capabilties行を見つけてください。
管理者権限がある場合は、この行のmeta_valueは以下のようになります。
a:1:{s:13:"administrator";s:1:"1";}
wp_usermetaテーブルに上記と異なる内容が表示されている場合は、「Edit」をクリックして変更してください。あるいは、phpMyAdminで新たに管理者アカウントを作成することも可能です。wp_usersテーブルに戻り、テーブルの上部にある「Insert」タブをクリックします。
ユーザー情報を入力したら、「Go」をクリックします。すると、テーブルに作成したユーザーが表示されます。このアカウントのIDを書き留めて、wp_usermetaテーブルに戻りましょう。
再度「Insert」をクリックして、以下の情報を入力します。
- Unmeta_id:自動的に入力されるため、空白のままにしてください。
- User_id:WP UsersテーブルのID
- Meta_key:wp_capabilities
- Meta_value:先ほどのコード
これで、新たな認証情報を使用してWordPress管理画面にログインできるようになるはず。既存のアカウントは削除するか、ユーザー役割を管理者に戻した上で、今回作成したアカウントを削除してください。
5. エラーログを確認して原因を特定する
一般に、サイトエラーのトラブルシューティングに役立つのは、サーバーのエラーログの確認です。エラーログには、プラグインまたはテーマの互換性異常、データベースエラーなど、「このページにアクセスする権限がありません」エラーの原因となる内容が記録されています。
サーバーのエラーログへのアクセス方法は、利用しているホスティング会社によって異なります。Kinstaの場合は、MyKinstaにログインするだけ。該当のサイトに移動して、「ログ」画面を開きます。
ドロップダウンメニューから「error.log」を選択し、ログに原因が表示されている場合は、トラブルシューティングの手がかりになります。特に何も表示されていなければ、別の解決策を実行してください。
6. データベースの接頭辞を確認する
MySQLデータベースには接頭辞があり、サイトのファイルにある接頭辞がphpMyAdminのそれと一致しない場合、このエラーが発生します。
接頭辞の不一致は、開発時に使用したローカルのステージングサイトを本番サーバーに移動する場合など、ウェブサイトの移動時に発生する可能性があります。これをwp-config.phpファイルにアクセスしましょう。
先ほどの解決策でも見たように、SFTPを使用します。wp-config.phpファイルを開いて、データベースの接頭辞を探します。デフォルトでは「wp_」になっています。
次に、phpMyAdminにログインして、データベースのテーブル接頭辞を確認します。以下のように、wp-config.phpファイルの接頭辞と一致するはずです。
wp-config.phpファイルの接頭辞と一致しない場合は、編集してください。
7. wp-config.phpファイルの変更を確認する
同様に、WordPressの設定ファイルの変更も確認しましょう。特にこのエラーが発生した直前にファイルを編集した場合、あるいはWordPressサイトがハッキングされている可能性がある場合は、この解決策が重要になります。
SFTPを使ってwp-config.phpファイルにアクセスし、変更されている疑わしいものを探しましょう。ファイル整合性監視機能や変更検出機能があれば、この手順は格段に簡単になります。
8. PHPを最新バージョンにアップグレードする
WordPressサイトがPHPの古いバージョンを使用していても、このエラーメッセージを引き起こす可能性があります。なお、PHPをアップグレードすれば、たとえエラーを解決できなくても、サイトの全体的なセキュリティとパフォーマンスが向上します。
バージョンを変更する前に、必ずサイトのバックアップを作成してください。管理画面にアクセスできない場合でも、手動またはMyKinstaで実行可能です。バックアップを取った上で、アカウントが最新バージョンのPHPと互換性があるかどうかをテストします。これには、WordPressのステージングサイトが便利です。
問題がなければ、バージョンを更新します。Kinstaのお客様は、MyKinstaにログイン後、該当サイトに移動して「ツール」> 「PHPエンジン」セクションの「変更」をクリックし、ドロップダウンメニューから最新バージョンを選択します。
Kinsta以外をご利用の場合は、その会社のコントロールパネルでアップグレードを行ってください。具体的な手順は、ホスティング会社に問い合わせてみてください。
9. ファイルへのアクセス権を確認する
サイトファイルへのアクセス権が改ざんされている可能性も考えられます。改ざんが行われている場合、管理者であってもサイトの特定の領域にアクセスできないことがあります。
サイトファイルへのアクセス権を確認するには、SFTPを使用してサーバーに接続します。ログインし後、「public_html」ディレクトリに移動し、「wp-admin」、「wp-content」、および「wp-includes」を一括選択します。フォルダを右クリックして、「File Permissions」(ファイルへのアクセス権)を選択してください。
表示される画面の設定が、以下のようになっているか確認します。そうでなければ、変更してください。
- Numeric Value:755
- Recurse into subdirectories(サブディレクトリに再帰):選択されている状態
- Apply to files only(ファイルにのみ適用):選択されている
確認後、「OK」をクリックし、「public_html」の他のファイルをすべて右クリックし、再度「File Permissions」を開きます。
次は以下のように設定してください。
- 数値:644
- Recurse into subdirectories(サブディレクトリに再帰):選択されている状態
- Apply to files only(ファイルにのみ適用):選択されている
その後、サイトに戻ってエラーが解消されているかどうかを確認しましょう。
10. 新規.htaccessファイルを作成する
ここまでの解決策を実行してもエラーが消えない場合は、.htaccessファイルをリセットしてください。これを行うには、FTPを起動し、「public_html」フォルダに移動したら、.htaccessファイルを見つけます。このファイルが表示されない場合は、FileZillaの隠しファイルを表示する手順に従ってください。
先ほどのプラグインやテーマファイルの変更と同様、既存の.htaccessファイルの名前を変更します。「.htaccess_original」や「.htaccess_backup」など、わかりやすい名前にしましょう。
それからファイルを右クリックして、「Download」を選択します。それからテキストエディターでファイルを開き、内容を以下に置き換えてください。
#BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCOnd %{REQUEST_FILENAME} !-d
RewriteRule ./index.php [L]
#END WordPress
このファイルの名前を「.htaccess」に変更し、サーバーにアップロードします。このファイルに原因があった場合は、これで管理画面にアクセスできるようになるはずです。
11. WordPressサイトを初期化する
最悪の場合は、WordPressに問題がある可能性も。これを解決するには、WordPressサイトをリセットしなければなりません。サイトをリセットすると、すべての投稿、固定ページ、ユーザーによるコメントなどが失われるため、リセット後に復元できる最新のバックアップがあることが重要です。
リセットは、MyKinsta(Kinstaのお客様のみ)、WordPressプラグイン、WP-CLI(WordPressのコマンドライン)などで実行可能です。サイトのコンテンツを誤って失わないよう、あくまで最終手段として実行してください。
まとめ
WordPressの管理画面にアクセスできない事態は、イライラするものです。「このページにアクセスする権限がありません」というエラーメッセージは、手間こそかかるものの、必ず解決することができます。
今回は、考えられる原因とそれに対する解決策を幅広くご紹介しました。時間をとって以下の解決策を実践し、エラーメッセージを解消しましょう。
- WordPressサイトの以前のバージョンを復元する
- すべてのプラグインを無効にする
- デフォルトテーマに変更する
- 自分が管理者であることを確認する
- エラーログを確認して原因を特定する
- データベースの接頭辞を確認する
- wp-config.phpファイルの変更を確認する
- PHPを最新バージョンにアップグレードする
- ファイルへのアクセス権を確認する
- 新規.htaccessファイルを作成する
- WordPressサイトを初期化する