500 Internal Server Error の原因と WordPress での解決策

HTTP 500 エラー

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

WordPress サイトでは、以下のいずれかが原因として考えられます。

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

各原因の詳細と、それぞれの対策方法・直し方を解説していきます。

その他の HTTP ステータスコードについては、以下の記事をご覧ください。

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

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

一般的には「503 Service Unavailable」というエラーが表示されますが、サーバーによっては「500 Internal Server Error」となるようです。

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

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

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

障害情報の対象となっていた場合、こちらからできることはありません。サーバーの対応・復旧を待つことになります。

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

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

スパムと思しき IP は、サーバーのログから見つけましょう。以下、エックスサーバーを例に解説します。

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

サーバーパネルの「アクセス解析」にある「アクセスログ」をダウンロードしてください。

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

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

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

IP をそのまま Google で検索してみて、Stop Forum Spam などに報告が上がっていないかチェックしましょう。

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

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

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

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

ひとつずつ IP を調べてアクセス拒否設定するのが困難な場合、WordPress のセキュリティプラグインを導入するとよいでしょう。

あわてて一気に複数のプラグインを入れると、今度は別の原因でブログが表示されなくなるかもしれません。しっかりと調べてから必要な対策を行ってください。

どれがよいのかわからなければ、多くのサイトで採用されている「SiteGuard WP Plugin」がおすすめです。

参考 初心者ならまずプラグインでセキュリティ対策『SiteGuard WP Plugin』

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

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

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

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

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

500 エラーが解消されたら、プラグインの見直しや CDN の導入など、今後に備えて様々な高速化設定を試していくのがおすすめです。

.htaccess 編集ミスの解決策

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

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

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

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

.htaccess を操作するのは、たいてい「キャッシュプラグイン」か「セキュリティプラグイン」なので、導入している場合はそのプラグイン設定に進んでリセットします。

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

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

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

テーマ設定を変更したあとにエラーが出た場合は、いったん設定を元に戻しましょう。

Snow Monkey ブラウザキャッシュ設定
「Snow Monkey」の高速化設定

設定を元に戻しても .htaccess にコードが追記されたままの状態になっている場合は、手動で削除する必要があります。

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

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

エックスサーバーは、サーバーパネルから .htaccess の編集が可能です。

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

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

バックアップファイルがあれば、そのまま上書きして元に戻せば OK です。

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

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

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

※ HTTPS のリダイレクト設定も消えるので、すべてやり直す必要があります

# 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

PHPエラーの解決策

PHP のエラーが原因で 500 Internal Server Error になることがあります。

エラー直前に以下のいずれかを行っていた場合、それが原因と考えてよいでしょう。

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

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

WordPress プラグイン自動更新通知
WordPress プラグイン自動更新通知例

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

サーバーを操作して PHP バージョンを変更したのちに HTTP 500 エラーが出た場合は、いったん元のバージョンに戻してみましょう。

「PHP 5.4」などから「PHP 7.4」などに変更したときにエラーが起きやすくなります。

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

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

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

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

古いプラグインを使っているままだとハッキングされる危険性も高くなるため、早急に削除することをおすすめします。

管理画面に入れなくなった場合は、PHP バージョンを一時的に下げれば再び入れるようになるかもしれません。

PHP バージョンを変更しても管理画面に入れないときは、FTP で疑わしいプラグインを削除しましょう。

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

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

右クリックでメニューを開き、「削除」を選択します。

FTPでプラグインを削除する

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

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

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

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

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

以上、WordPress で 500 Internal Server Error が出る原因の詳細と解決方法をお伝えしてきましたが、サーバーの障害ではなく .htaccess や PHP のエラーが原因となっているなら、バックアップファイルから復元するのが最も簡単です。

自分でバックアップをとっていたのであれば、そのファイルをもとに復元してみてください。

サーバーによっては自動バックアップ機能がありますので、それを使ってみるのもよいでしょう。

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

まとめ

500 Internal Server Error の解決策を簡単にまとめると、このようになります。

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

エラー解決のご相談をいただくとき、「直前に何らかの操作をしましたか?」とお聞きしても、「何もしていません」と返ってくるケースがかなりあります。

本当に何もしていないこともたまにありますが、たいていは何らかの操作をしているのに「それはエラーと関係しないはず」と勝手に判断していることが多いようです。

自分で解決する場合でもだれかに依頼するときでも、エラーが起きる前に何かしていないか思い出してみてください。ほとんどはその「何か」が原因です。

それでは、また。

Naifix Limited

Naifix Limited

Naifix Limited に無料登録すると、会員限定コンテンツ「ブログのアクセス数を最大限に増やす SEO 施策」ほか、ライブ配信やメールマガジンでブログ運営に役立つ最新情報を入手できます。

WordPressトラブルでお困りですか?
「ブログの保険」に加入すると、いつでも気軽にブログ運営に関する相談ができます。

ブログの保険 Essential Bloggers Care
Essential Bloggers Care