「500 Internal Server Error」が出たときの原因と対処
サイトを開いたら「500 Internal Server Error」と表示された。そんなときは、まずサーバーのエラーログを見て、見つからなければ WordPress なら .htaccess → プラグイン → テーマ → PHP のメモリ上限の順に切り分けるのが近道です。500は「サーバーが想定外の状態になった」という意味で、原因はいろいろあります。それでも、順番に切り分ければ、サーバーの会社に聞く前に自分で確かめられることは多くあります。
500 Internal Server Error とはどういう意味?
「サーバー側で想定外の問題が起きて、リクエストを処理できなかった」という意味のステータスコードです。HTTPの仕様(RFC 9110)でも、500は「サーバーが、リクエストの処理を妨げる想定外の状態に遭遇した」ことを示すと定義されています。
ポイントは、原因が何かまでは教えてくれないこと。「エラーが起きた」とだけ伝える、いわば総合窓口のコードです。だからこそ、ログを見ないと原因が分かりません。
似たコードとの違いは、ざっくり次のとおりです。
- 500:サーバー内部の不具合(この記事)
- 502:中継しているサーバーが、おかしな応答を受け取った
- 503:一時的に処理できない(詳しくは503エラーの記事)
- 504:中継先からの応答が時間内に来なかった
まず最初にやること:別の環境から開く
いきなり設定をいじる前に、2つだけ確認します。
- 数分待ってから再読み込みする。一時的なものなら、これで直ることがあります。
- スマホのモバイル回線など、別の環境から開く。そこでも500なら、サイト側の問題です。
ここで直らなければ、次の「ログの確認」に進みます。
500エラーの原因はどこで分かる?
答えはエラーログに書いてあることが多いです。ログを見れば、「どのファイルの何行目で失敗したか」が出ているからです。
見る場所は2つあります。
- サーバーの管理画面:多くのレンタルサーバーに、エラーログを表示する機能があります。メニュー名は会社ごとに違うので、お使いのサーバーのマニュアルで探してください。
- WordPress のデバッグログ:
wp-config.phpでWP_DEBUGとWP_DEBUG_LOGをtrueにすると、wp-contentフォルダにdebug.logが作られます。ただし WordPress の公式ドキュメントは、公開中のサイトでデバッグ機能を使うことをすすめていません。バックアップを取ってから、短い時間だけ使いましょう。画面にエラーを出さないようWP_DEBUG_DISPLAYはfalseにします。
ログに「Allowed memory size exhausted」とあればメモリ不足、特定のプラグインのパスが出ていればそのプラグインが怪しい、という具合に当たりがつきます。
WordPress で 500 が出たときの切り分け手順
ログで分からないときは、WordPress 公式ドキュメントが挙げている原因を、可能性の高い順に試します。その前に、ファイルを触る作業の前はバックアップを。
1. .htaccess を作り直す
公式ドキュメントでは、500の原因として最も可能性が高いのが .htaccess の破損とされています。
FTP で .htaccess を .htaccess_old にリネームして、サイトを開きます。直ったら、管理画面の「設定」→「パーマリンク」を開き、何も変えずに「変更を保存」。新しい .htaccess が作られます。
なお、.htaccess を使うのは Apache 系のサーバーです。nginx 系のサーバーには .htaccess がないので、この手順は当てはまりません。
2. プラグインを全部止める
管理画面に入れないときは、FTP で wp-content/plugins フォルダの名前を plugins_old などに変えます。全プラグインが無効になります。直れば、名前を戻して1つずつ有効化し、再発するものを探します。
3. テーマを標準のものに切り替える
管理画面に入れるなら、Twenty Twenty-One などの標準テーマに切り替えます。入れないときは、FTP で wp-content/themes の中の、今使っているテーマのフォルダ名を変えます。
4. PHP のメモリ上限を上げる
ログにメモリ不足が出ていたら、wp-config.php に次の1行を足します。
define( 'WP_MEMORY_LIMIT', '256M' );
公式ドキュメントには、一部のホストでは自動増加が許可されていないとあります。変わらなければ、サーバーの会社に確認しましょう。
5. WordPress 本体のファイルを入れ直す
最後の手段です。新しくダウンロードした WordPress から wp-admin と wp-includes を取り出し、サーバー上のものと置き換えます。wp-content や wp-config.php は触りません。
サーバーの会社に連絡するときに伝えること
上の手順で直らなければ、サポートに聞くのが早いです。次の情報があると話が進みます。
- いつから出ているか
- 直前に何を変えたか(プラグインの更新、PHPのバージョン変更など)
- ここまでに試したこと
- エラーログの該当部分
サーバー側の障害や、PHP のバージョン変更が原因のこともあります。自分では見えない部分なので、早めに聞いたほうが結局は早いです。
同じことを繰り返さないために
- プラグインやテーマの更新前に、バックアップを取る(バックアップの基本)
- 一度に複数のプラグインを更新しない。壊れたときに犯人を絞れます
- 表示が重いなら、先にサイトが重いときの確認項目を見る。負荷が高い状態が続くと、エラーにつながります
よくある質問
Q. 500エラーは自分のパソコンが原因のこともありますか?
Q. 500エラーを放置するとSEOに影響しますか?
Q. .htaccess を消してしまっても大丈夫ですか?
あなたに合うサーバーを見つけるなら
記事を読んでも迷う方は、3分の診断ツールで1〜2社に絞り込めます。
5つの質問に答えるだけ / 登録不要
気になるサイトのサーバーが分かる
URLを入れるだけで、そのサイトが使っているレンタルサーバー会社を判定します。
このサイトが使っているサーバーを調べる