WordPressの500エラー(Internal Server Error)の原因と直し方

目次

WordPressのサイトを開くと「500 Internal Server Error」「サーバーエラー」と表示される。これはサーバー側で処理が止まったことを示す画面です。原因の多くは .htaccess ファイルの破損で、ほかにプラグインの不具合、PHPバージョンの非互換、メモリ不足などがあります。多くは順番に切り分ければ、ご自身で元に戻せます。

当サイト記事 難易度表記について

  • 【難易度:簡単】WordPressの管理画面だけでできる・すぐ試せること
  • 【難易度:普通】少し手間がかかる(念のため、事前にバックアップを取りましょう)
  • 【難易度:やや難しい】FTPや設定ファイルへの操作が必要(これらが分からない場合や、不慣れな場合は実施するかは慎重に検討ください)
  • 【難易度:難しい】専門の知識が必要。場合によっては致命的なトラブルにもなりかねませんので自信がない場合は専門家へご相談を
古式ゆかしいApacheの500エラー(Internal Server Error)画面
古式ゆかしいApacheの500エラー(Internal Server Error)画面

まず試す3ステップ

急いでいる方は、上から順に試してください。作業の前に、サーバーのバックアップ機能などで今の状態を控えておくと安全です。

  1. .htaccess を一時退避する(手順は後述)。これで500が消えれば、原因は .htaccess です。
  2. 直前に更新・追加したプラグインを停止する(管理画面に入れる場合)。
  3. サーバーのエラーログを見る。500が出た時刻の記録に、どのファイルで止まったかの手がかりがあります。

この記事の手順には、FTPや wp-config.php などサーバー側のファイルに触れる場面があります。操作は元に戻せるものから順に並べていますが、不安なときは無理に進めないでください。

どこで500エラーが出るかを切り分ける

出る場所で原因が変わります。

  • サイト表示だけエラー: テーマやプラグイン、.htaccess の問題。
  • 管理画面だけエラー: 管理画面側のプラグインや wp-admin の .htaccess
  • 両方エラー: サーバー全体の設定か、PHPの問題。
  • 特定のページだけエラー: そのページで使っているショートコード・ブロック・カスタムコードが原因のことが多いです。

.htaccess を一時退避する【難易度:やや難しい】

サイトのルートにある .htaccess を、FTPかサーバーのファイルマネージャーで .htaccess-old などに名前を変えます。これで500エラーが消えれば、原因は .htaccess です。

このとき、トップページは表示されても、個別の記事や固定ページが一時的に「404 Not Found」になることがあります。.htaccess に書かれていたURLの転送ルールが一時的に無くなるためで、サイトが壊れたわけではありません。次の手順で作り直せば元に戻ります。

WordPressの管理画面で「設定 → パーマリンク」を開き、変更せずに「変更を保存」を押すと、WordPressが正しい .htaccess を作り直し、404も解消します。

なお、.htaccess にセキュリティやリダイレクトなどの設定を自分で書き加えていた場合、作り直しで戻るのはWordPressの標準部分だけです。退避した .htaccess-old は消さずに残し、必要な記述だけ後で書き戻してください。

現場では、500が出たらまずこの .htaccess の退避と、エラーログの時刻照合から入ることが多いです。原因のファイルを早く絞り込めます。

プラグイン・テーマを無効化する【難易度:やや難しい】

FTPで wp-content/plugins フォルダの名前を変えると、全プラグインが止まります。これで直れば、フォルダ名を戻して1つずつ有効化し、原因を特定します。テーマが疑わしいときは、使用中テーマのフォルダ名を変えて標準テーマに切り替えます。

PHPバージョンを確認する【難易度:普通】

サーバー会社がPHPを新しいバージョンに上げた直後は、古いテーマやプラグインが対応できず、500エラーになることがあります。サーバーのコントロールパネルでPHPのバージョンを1つ前に戻し、表示が回復するか確認します。回復したら、テーマ・プラグインを新しいPHPに対応したものへ更新してから、バージョンを上げ直します。

PHPのメモリ不足【難易度:やや難しい】

処理に必要なメモリが上限に達して止まることもあります。エラーログに「Allowed memory size … exhausted」と出ていれば、これが原因です。wp-config.php に次の1行を足すと、改善する場合があります。

define( 'WP_MEMORY_LIMIT', '256M' );

※ コードをコピーすると引用符が全角(‘ ’)に変わることがあります。動かないときは、半角の ‘ で囲み直してください。

サーバー側の上限で頭打ちになることもあるため、効かないときはサーバー会社に確認します。

サーバーのエラーログを読む【難易度:普通】

多くのホスティングサーバーでは、エラーログが用意されています。500エラーが出た時刻のログを調べられれば、どのファイルで処理が止まったのか、原因の特定がしやすくなります。エラーログは、サーバーのコントロールパネルから見られることが多いです。

パーミッション(権限)が原因のとき【難易度:難しい】

まれに、ファイルの権限(パーミッション)設定が原因で500エラーになることがあります。ただし権限の変更は、誤るとサイト全体が動かなくなります。心当たりがなければご自身で変更せず、サーバー会社か専門家に相談してください。

やってはいけないこと

  • バックアップを取らずに .htaccesswp-config.php を上書きする。元の内容を控えてから触ってください。
  • 原因がわからないままパーミッションを推測で変更する。サイト全体が動かなくなることがあります。

よくある質問

  • .htaccess が見当たりません。
    • 隠しファイルのため、FTPソフトの設定で「隠しファイルを表示」を有効にすると見えます。サイトのルート(wp-config.php と同じ階層)にあります。
  • 特定の記事だけ500になります。
    • そのページで使っているショートコードやブロック、カスタムコードを疑います。直前に追加したものから外して確認してください。
  • 画面が真っ白で、エラーコードも出ません。

※ 本記事は一般的な対処方法の解説です。WordPressやサーバーの構成によって手順や結果は異なります。ファイルやデータベースの操作は、誤るとサイトが表示できなくなることがあるため、作業前に必ずバックアップを取り、ご自身の判断と責任の範囲で行ってください。無理に進めず、専門スタッフや保守契約担当者にご相談ください。ご相談先がない場合は、当サイトへお気軽にご相談ください。

今すぐ相談する(ご相談無料)