500エラーは「サーバー内部で処理に失敗した」という意味です。ファイルは存在していますが、実行の途中で問題が起きています。エックスサーバーでは.htaccessの構文ミス、プラグインの不具合、PHPバージョンの不一致の3つが主な原因です。ここでは復旧の手順を、原因の可能性が高い順に解説します。管理画面全体の使い方は使い方ピラーをご覧ください。
まず「直前に何をしたか」を思い出してください。500エラーの原因は、ほぼ直前の変更です。プラグインの追加・更新、テーマの変更、.htaccessの編集、PHPバージョンの切り替え。その変更を戻せば復旧します。管理画面に入れなくても、FTPかサーバーパネルから対処できます。
500エラーの主な原因
| 原因 | 症状の特徴 | 頻度 |
|---|---|---|
| .htaccess の構文ミス | サイト全体が即座にエラー | 高 |
| プラグインの不具合 | 追加・更新の直後から | 高 |
| PHPバージョンの不一致 | 切り替えた直後から | 高 |
| テーマの不具合 | テーマ変更・更新の直後 | 中 |
| WordPress本体の更新 | 自動更新後に突然 | 中 |
| メモリ不足 | 特定のページだけ、断続的 | 低 |
いずれも「直前の変更」がきっかけです。何もしていないのに出た場合は、自動更新が動いた可能性を疑ってください。
復旧の手順
原因を特定できていない場合、この順で試してください。
- 1 直前に何をしたか思い出すプラグインの追加・更新、テーマの変更、.htaccessの編集、PHPバージョンの切り替え。心当たりがあればそれを戻す
- 2 PHPバージョンを戻す切り替えた記憶があれば、サーバーパネルで元のバージョンに戻す。これだけで直ることが多い。詳細はPHPバージョンの記事へ
- 3 .htaccess を確認するFTPまたはファイルマネージャで開く。編集した記憶があれば、追加した記述を削除するか元のファイルに戻す
- 4 プラグインを一括で無効化するFTPで
wp-content/pluginsフォルダの名前を変更する(例:plugins-off)。これで全プラグインが無効になる - 5 管理画面に入れるか確認する入れたらフォルダ名を戻し、プラグインを1つずつ有効化して原因を特定する
- 6 テーマを標準のものに戻すここまでで直らなければ、
wp-content/themesの使用中テーマのフォルダ名を変更する - 7 自動バックアップから復元する最終手段。14日分を保持し復元は無料。復元時点まで戻るので日付を確認
原因① .htaccess の構文ミス
もっとも即座に、そして確実にサイト全体を止めるのがこれです。
1文字の誤りでサイト全体が500エラーになります。閉じ忘れ、余分な文字、全角スペースの混入。どれも同じ結果になります。
対処
編集前のファイルを保存していれば、それに戻すだけです。保存していない場合は、追加した記述を1つずつ削除して確認してください。
WordPressの場合、.htaccessを空にする(またはリネームする)とパーマリンクが動かなくなりますが、サイト自体は表示されるようになります。管理画面に入れたら、「設定」→「パーマリンク」で保存し直せば正しい記述が再生成されます。
.htaccess を編集する前には必ず元のファイルをダウンロードしてください。この習慣があるかどうかで、復旧にかかる時間がまったく変わります。プラグインが自動的に記述を追加することもあるため、定期的にバックアップを取っておくと安心です。
原因② プラグインの不具合
プラグインを追加・更新した直後から出る場合です。プラグイン同士の相性、PHPバージョンとの不一致が原因になります。
管理画面に入れる場合
プラグインを1つずつ無効化して、症状が消えるかを確認します。直前に追加・更新したものから試してください。
管理画面に入れない場合
FTPまたはファイルマネージャから、wp-content/plugins フォルダの名前を変更します。
wp-content/plugins → wp-content/plugins-off
これですべてのプラグインが無効化され、管理画面に入れるようになります。
入れたらフォルダ名を元に戻します。WordPressはプラグインを「停止」した状態で認識するので、1つずつ有効化して原因を特定できます。
プラグイン単体を無効にしたい場合は、wp-content/plugins/プラグイン名 のフォルダ名を変更します(末尾に -off を付けるなど)。原因の見当がついている場合はこちらが早いです。
原因③ PHPバージョンの不一致
PHPバージョンを切り替えた直後に出る場合です。古いテーマやプラグインが新しいPHPに対応していないと起こります。
対処
サーバーパネルでPHPバージョンを元に戻せば復旧します。WordPressの管理画面に入れなくても、サーバーパネルは別の画面なので操作できます。
戻す先が分からない場合は、1つずつ古いバージョンを試してください。詳細はPHPバージョンの記事にまとめています。
原因④ 何もしていないのに出た場合
心当たりがないのに500エラーが出た場合、次を確認してください。
1. 自動更新が動いた
WordPress本体、テーマ、プラグインは自動更新される設定になっていることがあります。更新履歴を確認してください。
-
アクセスが急増した
この場合は500ではなく503エラーが出ることが多いです。時間をおくと復旧することがあります。 -
サーバー側の障害
公式の障害情報を確認してください。他のサイトも同時に見えないなら、この可能性があります。確認方法は障害情報の記事へ。
500と503と403の違い
紛らわしいので整理しておきます。
| 500 | 503 | 403 | |
|---|---|---|---|
| 意味 | サーバー内部のエラー | 一時的に利用不可 | アクセス権限がない |
| 主な原因 | .htaccess、プラグイン、PHP | アクセス集中、メンテナンス | WAF、アクセス制限 |
| 時間をおくと直るか | 直らない | 直ることがある | 直らない |
| 対処 | 原因を取り除く | 待つ、負荷を下げる | 制限を解除 |
403エラーの対処は403エラーの記事にまとめています。
自動バックアップからの復元
ここまで試しても直らない場合の最終手段です。
エックスサーバーは14日分の自動バックアップを保持し、復元は無料です。サーバーパネルから操作できます。
復元するとバックアップ取得時点の状態に戻ります。それ以降に書いた記事、受け取ったコメント、変更した設定は消えます。日付をよく確認してから実行してください。
可能であれば、復元前に現在のファイルとデータベースをダウンロードしておくと、あとから必要なデータを取り出せます。
再発を防ぐために
500エラーは予防できます。
- .htaccess を編集する前に必ずダウンロードする
- プラグインは一度に大量に更新しない。1つずつ更新して確認する
- PHPバージョンを切り替える前に、本体・テーマ・プラグインを最新にする
- 使っていないプラグインは削除する
- バックアップの場所を把握しておく。トラブルが起きてから探すと余計に焦る
契約直後の設定は初期設定チェックリストにまとめています。
まとめ
500エラーはサーバー内部で処理に失敗したという意味で、原因はほぼ直前の変更です。プラグインの追加・更新、テーマの変更、.htaccessの編集、PHPバージョンの切り替え。心当たりがあれば、それを戻せば復旧します。
管理画面に入れなくても対処できます。サーバーパネルはWordPressとは別の画面なのでPHPバージョンを戻せますし、FTPやファイルマネージャから wp-content/plugins フォルダの名前を変更すれば全プラグインを無効化できます。
最終手段として14日分の自動バックアップから無料で復元できます。ただし復元時点まで戻るため、日付を確認してから実行してください。
予防としては.htaccessを編集する前に必ずダウンロードすることと、プラグインを一度に大量更新しないことの2つが効きます。
403エラーは403エラーの記事、PHPバージョンの切り替えはPHPバージョンの記事、FTPの使い方はFTPの記事をご覧ください。