WordPress で 500 Internal Server Error になる原因と解決策

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

ブログ運営者が覚えておきたい HTTP ステータスコード

WordPress で 500 エラーが発生する原因は、主に以下の 3 つです。

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

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

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

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

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

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

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

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

ブルートフォースアタック(Brute-force attack)や DDoS(Distributed Denial of Service 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 管理画面のセキュリティ対策をする

攻撃が仕掛けられているのが濃厚で、かつ管理画面に入れる場合、WordPress のログインまわりを強化するセキュリティプラグインを導入しておくとよいでしょう。

侵入されてしまったあとにプラグインを入れても意味がないため、何もされていないときに強化しておくべきですけどね…

セキュリティ系プラグインはたくさんあるので、どれがよいのかわからなければ「XO Security」をおすすめします。

WordPress 初心者におすすめの定番プラグイン

もう少し強化したい場合は、ログインを 2 段階認証方式にする方法もあります。以下の記事でプラグインを紹介しているので、ご参考まで。

WordPress 管理画面ログインを 2 段階認証にできるプラグイン 4 選

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

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

キャッシュプラグインで負荷を軽減させることもできますが、あわてて導入するのはやめたほうがよいです。プラグインによっては設定がかなり難しく、さらにサーバーに負荷をかけてしまったり、設定を間違えて別のエラーが発生することもありますからね。

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

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

500 エラーが解消されたら、プラグインの見直しや CDN の導入など、今後のために高速化を検討しましょう。引き続き大量のアクセス数が見込めるなら、プランの見直しやサーバーの変更を検討したほうがよいかもしれません。

プラグインなしで WordPress を高速化する 9 つの方法

.htaccess 編集ミスの解決策

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

自分で編集していなくても、プラグインやテーマがコードを追記することがあるので、エラーが出る直前に何をしたのか思い返してみてください。プラグインの自動更新が原因になっていることもあります。

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

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

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

.htaccess を操作するプラグインは、「キャッシュ系」「セキュリティ系」「SEO 系」がほとんどです。

どのプラグインが原因かハッキリしないときは、いったんすべてのプラグインを停止して復旧するか試してみてください。

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

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

テーマ設定変更後にエラーが出たのであれば、いったん設定を元に戻しましょう。再設定できない場合も、いったん別のテーマに変更して、それでエラーが解消されるならテーマが原因だとあたりをつけられます。

Snow Monkey ブラウザキャッシュ
Snow Monkey のブラウザキャッシュ設定

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

または、ココナラなどで修正してくれる人を探すことになります。

ブログ運営者向けサービス(ココナラ・SEO コンサルタント瀬尾)

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

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

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

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

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

以下のどちらかで復元できます。

バックアップデータがある場合

バックアップデータから .htaccess のみアップロードして上書き。

バックアップデータがない場合

テーマやプラグインが追記した箇所を削除して再アップロード。

以下のようにコメントが付けられていることが多いので、わかりやすいと思います。

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

コードが複雑でどこを削除すればよいのかわからない場合、以下の手順でリセットできます。

  1. コードをすべて削除し、空白の状態で .htaccess を上書き
  2. 管理画面のパーマリンク設定で、何も変更を加えず「変更を保存」

この場合、HTTPS のリダイレクト設定なども消えるので、500 エラー解決後に再設定が必要です。

PHPエラーの解決策

PHP のエラーが原因で 500 Internal Server Error になる場合があります。エラー直前に以下のいずれかを行っていた場合、そこが原因です。

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

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

WordPress 本体のダウングレード方法

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

PHP バージョン変更後に HTTP 500 エラーが出た場合は、いったん元のバージョンに戻してください。「PHP 7.0」などから「PHP 8.0」など、大幅に変更したときにエラーが起きやすくなります。

サーバーによってはバージョン変更に数分かかるので、変更後はしばらく待ってくださいね。

WordPress の PHP 推奨バージョン(現在は 7.4)以下の古いバージョンを使い続けるのは絶対にやめましょう。推奨バージョンで動かない場合、テーマやプラグインの早急な見直しが必要です。

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

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

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

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

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

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

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

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

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

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

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

.htaccess や PHP のエラーが原因で、自力で元に戻せないときは、バックアップデータから復元するのが最も簡単です。

自分でバックアップをとっているなら、そのデータを使って復元しましょう。

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

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

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

500 Internal Server Error 解決策まとめ

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

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

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

自力で解決する場合でも、だれかに依頼する場合でも、直前の行動をできるかぎり思い出してみてください。たいていはそこに原因があります。

ブログのデータが消滅したわけではないので、落ち着いて対処してくださいね。長時間止まったままだと検索順位などに影響しますから、解決が難しいときは遠慮なくご相談ください。

WordPress の一般的なエラーや不具合への対応方法まとめ

Author

Naifix 編集部
Web コンサルティング業務を中心に、サイト制作・コンテンツ販売・メディア運営代行業務を行っております。当サイト(Naifix)では、おもにブログ初心者向けのノウハウを無料で配信しています。