500 Internal Server Error とは、サーバーの内部で何らかのエラーが生じたときに表示される HTTP ステータスコードだ。「HTTP 500 エラー」と呼ばれることもある。

WordPress では、以下のいずれかが原因として考えられる。

  • 一時的に大量の負荷がかかった(アクセス増や攻撃)
  • .htaccess 編集ミス
  • PHP エラー(カスタマイズの失敗や古いプラグインの影響)

本記事は、Web サイト運営者・管理者向けに、各原因の詳細と対策方法・直し方を解説していく。

なお、ユーザー側でできることは何もない。ページを更新(リロード)しても表示されることはないので、運営側の対応を待とう。

一時的に大量の負荷がかかった場合の解決策

とくに何もしていないのに「500 Internal Server Error」が表示された場合、サーバーが一時的な過負荷状態になっている可能性がある。サーバーのメモリ上限オーバーが原因だ。

通常は「503 Service Unavailable」というエラーが表示されるが、サーバーによっては HTTP 500 エラーとなる。

解決策(1)
サーバーからのメールや障害情報をチェック

過負荷状態でサイトが一時的に表示されていない場合、サーバーから警告メールが届くことがある。

ブルートフォースアタック(Brute-force attack)などの攻撃が行われているかもしれないので、サーバー障害情報などもチェックしておこう。

障害が発生していた場合、こちらからできることは何もない。サーバーの対応・復旧を待つだけだ。

解決策(2)
IPを調べてスパムと思われるアクセスを遮断する

自分のサイトに攻撃が仕掛けられている場合、攻撃元 IP のアクセスを遮断すると解決できる可能性がある。

スパムと思しき IP は、サーバーのログから見つけられる。以下はエックスサーバーの場合だ。

STEP
アクセスログをダウンロード

サーバーパネルの「アクセス解析」にある「アクセスログ」をダウンロードしよう。

エックスサーバー アクセスログ
STEP
疑わしい IP を探す

ダウンロードしたファイルをテキストエディタで開き、xmlrpc.php や wp-login.php などに何度もアクセスを試みている IP を探す。

スパムと思われるIP
xmlrpc.php にアクセスしている IP 例
STEP
IP を検索してスパムリストに登録されているか確認

IP をそのまま Google で検索し、Stop Forum Spam などに報告が上がっていないかチェック。該当する IP があればスパムと判断してよい。

IPアドレスをGoogleで検索
STEP
アクセス拒否設定に IP を登録

スパムと思しき IP が見つかったら、サーバーパネルの「アクセス拒否設定」で IP を追加登録する。

エックスサーバー アクセス拒否設定

解決策(3)
WordPress管理画面のセキュリティ対策をする

一つずつ IP を調べてアクセス拒否設定するのが困難な場合、WordPress のセキュリティプラグインを導入してみよう。ただし、プラグイン導入前の攻撃は参照できない。

あわてて一気に複数のプラグインを入れると、今度は別の原因でブログが表示されなくなるおそれがある。セキュリティプラグインは一つだけ入れれば大丈夫だ。

どれがよいのかわからなければ、「XO Security」をおすすめする。

【定番】WordPress初心者におすすめの目的別厳選プラグイン

解決策(4)
WordPress高速化設定で負荷を軽減する

サーバー障害がなく攻撃も行われていないようなら、一時的なアクセス増が原因かもしれない。

キャッシュプラグインで負荷を軽減させることもできるが、安易に導入するのはやめたほうがよい。プラグインによっては設定がかなり難しく、さらにサーバーに負荷をかけてしまう可能性もあるからだ。

サーバーに高速化設定がある場合は、まずそちらを試してみよう。

エックスサーバー 高速化
エックスサーバーの高速化設定

500 エラーが解消されたら、プラグインの見直しや CDN の導入など、今後に備えて様々な高速化設定を試してほしい。今後も大量のアクセス数がきそうであれば、プランの見直しやサーバーの変更を検討したほうがよいかもしれない。

.htaccess 編集ミスの解決策

500 Internal Server Error の原因のほとんどは、「.htaccess」というファイルの記述ミスにある。

自分で編集した記憶がなくても、プラグインやテーマがコードを追記したかもしれない。エラーが出る直前に何をしたのか思い返してほしい。

解決策(1)
プラグインの設定をリセットまたは削除する

管理画面にログインできるなら、直前に行った操作を思い出して設定を元に戻そう。プラグイン設定にリセット項目があるなら、リセットするのが確実だ。

.htaccess を操作するのは、「キャッシュプラグイン」か「セキュリティプラグイン」が多い。

プラグインを停止・削除するだけで解決することもあるが、停止しても .htaccess は書き換えられたままになっていることも少なくない。削除する前にできるだけ設定を元に戻しておこう。

よくわからなければ、いったんすべてのプラグインを停止してみるのもよい。

解決策(2)
テーマの設定をリセットまたはテーマ変更する

WordPress の一部テーマには、高速化設定としてブラウザキャッシュ機能などが備わっている。

テーマ設定変更後にエラーが出たのであれば、いったん設定を元に戻そう。再設定できない場合は、いったん別のテーマに変更してみてほしい。それでエラーが解消されるなら、十中八九テーマが原因だ。

自力で解決が難しい場合、可能であれば制作者にサポートを依頼しよう。

解決策(3)
.htaccess ファイルを元の状態に戻す

自分で .htaccess ファイルを編集した場合、またはプラグインやテーマの設定をリセットしてもエラーが直らない場合は、.htaccess を元の状態に戻そう。

エックスサーバーのように、管理画面から .htaccess の編集ができるサーバーもある。

エックスサーバー .htaccess 編集

サーバーに編集機能がない場合は、FTP でファイルをダウンロードして編集しよう。

バックアップデータがあるなら、.htaccess のみアップロードして上書きすれば元に戻る。

バックアップデータがなければ、ダウンロードしたファイルを編集して追記されていたコードを削除し、再度アップロード・上書きしよう。プラグインやテーマによって追記された箇所には、以下のようにコメントが付けられていることが多い。

# BEGIN プラグイン名
<追記されたコード>
# END プラグイン名

コードが複雑でどこを削除すればよいのかわからない場合、いったん以下のコードに置き換えれば完全にリセットできる。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

※ HTTPS のリダイレクト設定も消えるので、設定していた場合はやり直す必要あり

PHPエラーの解決策

PHP のエラーが原因で 500 Internal Server Error になる場合がある。エラー直前に以下のいずれかを行っていた場合、それが原因と見てよいだろう。

  • WordPress 本体のアップデート
  • 新規プラグイン追加
  • プラグイン更新
  • プラグイン設定変更
  • テーマ変更
  • テーマ設定変更
  • テンプレートファイルのカスタマイズ
  • PHP バージョンの変更

プラグイン自動更新を ON にしていると気づかないことがあるため、自動更新時に送られてくるメールもチェックしておこう。

解決策(1)
PHPバージョンを元に戻す

PHP バージョン変更後に HTTP 500 エラーが出た場合は、いったん元のバージョンに戻してみよう。「PHP 5.4」などから「PHP 7.4」など、大幅に変更したときにエラーが起きやすくなる。

サーバーによってはバージョン変更に数分かかるので、あわてずにしばらく待ったほうがよい。

これはあくまで暫定的な処置だ。古いバージョンの PHP を使い続けるのは絶対にやめてほしい。セキュリティ面で問題が出てくるから、新しいバージョンで動作するようテーマやプラグイン等を早急に見直すべきだ。

解決策(2)
プラグインを停止・削除する

更新されていない古いプラグインは、最新の PHP バージョンで動かない可能性がある。または、更新されたプラグインに不具合があったり、テーマや他のプラグインと干渉すしてエラーが起きることもある。

管理画面に入れる場合は、いったんすべてのプラグインを停止してみよう。その状態でサイトが問題なく表示されるなら、一つずつ有効化してエラーの原因となっているプラグインを突き止めていく。

管理画面に入れなくなった場合は、PHP バージョンを一時的に下げれば再び入れるようになるかもしれない。それでも入れないときは、FTP で疑わしいプラグインを削除してみよう。

FTP でプラグインを削除する手順は以下のとおり。

STEP
「wp-content」に入る
wp-content
STEP
「plugins」に入る
wp-content plugins
STEP
疑わしいプラグインを削除する
FTPでプラグインを削除する

解決策(3)
テーマを変更する

プラグインを見直してもエラーが解消しないとき、テーマ自体に問題があるかもしれない。いったん「Twenty Twenty-Two」など別のテーマに変更してみよう。

もしテーマのカスタマイズを行った直後にエラーが出たのなら、カスタマイズした部分を元に戻してみてほしい。コードの記述ミスか、最新版の PHP で動かないコードを書いている可能性がある。

プラグインと同様、長期間更新されていないテーマは使わないほうがよいので、この機会に別のテーマへ乗り換えるのがおすすめだ。

バックアップから復元するのが最良の解決策

WordPress で 500 Internal Server Error が出る原因の詳細を見てきたが、.htaccess や PHP のエラーが原因となっているなら、バックアップデータから復元するのが最も簡単だ。

自分でバックアップをとっていたのであれば、そのデータを使って復元しよう。

WordPressバックアップ方法と最適なデータ保管方法

サーバーによっては自動バックアップ機能があるから、自分でバックアップしていないときはそれを使ってみるのもよい。多少時間を要するが、遅くても数時間で復旧できる。

エックスサーバー自動バックアップ
エックスサーバーはファイル・データベースが自動的にバックアップされている

さいごに

500 Internal Server Error の解決策は以下のとおり。

  • .htaccess ファイルを元の状態に戻す
  • PHP バージョンを一時的に下げる
  • プラグインを削除する
  • バックアップデータから復元する

自分では何もしていないと思っても、「これはエラーと関係しないはず」と勝手に判断しているだけかもしれない。

自力で解決する場合でも、だれかに依頼する場合でも、頭をクリアにして直前の行動を振り返ってみよう。たいていはそこに原因がある。

ブログのデータが消滅したわけではないから、落ち着いて対処してほしい。

Reinx 記事執筆:Reinx 編集部 瀬尾 真

Web 業界歴 20 年の知見をもとに、初心者でも楽しくブログ運営に取り組んでいただけるよう、WordPress や SEO のノウハウを提供しています。ブログ診断無料サービスもご利用ください。

ブログ運営でお悩みの方へ

ブログ初心者を対象に、無料でブログ診断を行っています。

「アクセス数が伸びない」「検索にインデックスされない」「Google AdSense 審査に通らない」といったお悩みがあればぜひご利用ください。問題の原因を探り、それぞれに合わせた解決策をご提案します。