2017/05/2329 Shares

500 Internal Server Error(HTTP500エラー)の原因とWordPressでの解決策

500 Internal Server Error

500 Internal Server Error とは HTTP ステータスコードのひとつで、サーバーの内部で何らかのエラーが生じたときに表示されるものです。主な原因は以下の 4 つです。

  1. CGI の誤作動(パーミッションやパスの設定ミスを含む)
  2. サーバーのメモリ上限オーバー
  3. .htaccess の設定ミス
  4. PHP の記述ミス

YouTube などでこのエラーが出たとき、ユーザー側でできることは何もありません(ページを更新すると表示されることもあります)。運営側のエラー解消を待ちましょう。

この記事では、サイト運営者が 500 Internal Server Error を解決する方法・直し方をご紹介していきます。おもに WordPress がメインとなっていますので、エラーが出たときは落ち着いて対処しましょう。

HTTPステータスコードとは

エックスサーバーの500エラー画面

ブログが表示されなくなる原因はいろいろ考えられますが、エラー時には HTTP ステータスコードを見ることであたりをつけることができます。

301?404?503?これだけは覚えておこうHTTPステータスコード で解説していますのでそちらをご覧ください。

このうち、500 Internal Server Error(HTTP 500 エラー)は、サーバー内部で何らかのエラーが出ているときに返されるコードです。

CGI の暴走が原因になっている場合は、パーミッションやパス、文字コードの設定を見直してみてください。

CGI は WordPress サイトで触れる機会があまりないと思いますので、その他の原因と解決方法を詳しく見ていきましょう。

気がついたら500エラーが出ていた場合の解決策

ふと自分のブログを見たら「Status: 500 Internal Server Error」と表示されていた!

直前にカスタマイズなどをしていない・プラグインのインストール/更新も行っていない状態でエラーが出ていたら、サーバーのメモリー上限オーバー になっている可能性があります。

一時的な過負荷状態だと 503 Service Unavailable が出ることもありますが、サーバーによっては 500 Internal Server Error となるようです。

何もしていないのにエラーが出ているとかなり焦ると思いますが、落ち着いて順に対策していけば大丈夫です。

サーバーからのメールや障害情報をチェック

過負荷状態になっていると、サーバーから警告メールがくることがあります。

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

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

でも念のためにアクセスログを調べ、ブログに同じ IP アドレスから何度もアクセスかないかチェックしておきましょう。

IPを調べてスパムと思われるアクセスを遮断する

ユーザーの IP アドレスや端末情報(生ログ)は、Google アナリティクスでは見られません。別のアクセス解析ツールやサーバーのログで確認してください。

ここでは、エックスサーバーを例に解説していきます。

サーバーパネルの「統計」にある「ログファイル」からアクセスログをダウンロード。

エックスサーバーログファイルの場所

エックスサーバーのアクセスログをダウンロード

サブドメインなど複数サイトがある場合は個別にダウンロードしよう

ログファイルは「naifix.com.access_log」というようなファイル名になっており、テキストエディタで開けます。

WordPress サイトで xmlrpc.php や wp-login.php などのファイルに何度もアクセスを試みているような IP が見つかったら、スパム・攻撃の可能性も少なくありません。

スパムと思われるIP

xmlrpc.php にアクセスを試みたIPを発見

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

IPアドレスをGoogleで検索

ブラックリストとして登録されていたり、明らかにあやしいと思われるものであれば、「アクセス拒否設定」から IP アドレスを登録しておけばアクセスを遮断できます。

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

アクセスを遮断するIPを登録しておこう

手動でひとつずつ対応していくのはかなりの手間ですので、何らかの攻撃をされているようなら、この機会に WordPress のセキュリティを強化しておくのもよいですね。

WordPress管理画面のセキュリティ対策をする

無料ブログと違って、WordPress のセキュリティ対策は運営者の責任です。wp-login.php を攻撃されて突破されてしまうと、ブログが乗っ取られる可能性もあるので、十分注意してください。

早急にできる対策は、ログイン画面に IP 制限 をかけることです。

あやしい IP を特定して遮断するのではなく、自分以外のアクセスをブロックしておけばひとまず安心ですね(複数人で運営している場合は、それぞれの IP を確認)。

管理画面にアクセス制限をかけたら、プラグインをいれてその他のセキュリティ面も強化しておきましょう。

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

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

WordPressの高速化を行う

サーバー障害がなく、攻撃も行われていないなら、たんにメモリオーバーしているだけかもしれません。

ひとつのサーバーに何十個も WordPress を入れていたり、使っているかどうかよくわからないプラグインを大量に入れているなら順次削除していきましょう。

原因になっていると思われるものがたくさんありすぎてよくわからない場合は、mod_pagespeed を使ってみるのも手です。

エックスサーバーなら簡単に設定できますので、設定を ON にしてエラーが解消するか試してみてください。

mod_pagespeed設定

エラーが解消されたからといって安心するのではなく、サイトを他サーバーに分散させたり、不要なプラグインを削るなどのメンテナンスも行ってくださいね。

安易にキャッシュ系プラグインを導入してしまうと、かえって遅くなることがあります。まずは使っていないテーマやプラグインを削除するなど、軽量化から取り組んでみてください。

カスタマイズや更新後に500エラーが出た場合の解決策

カスタマイズを行ったり、プラグインの新規インストール/更新を行った直後に 500 Internal Server Error となった場合は、作業直前の状態に戻せば解決する ことがほとんどです。

テーマ・プラグインインストール後にエラーが出たとき

テーマを入れ替えたり新しいプラグインを更新するなど、何らかの手を加えたあとに 500 エラーが出たら、あわてず元の状態に戻しましょう。

管理画面にログインできる場合は、テーマやプラグインを削除します。

もし管理画面に入れなくなった場合は、FTP で wp-content 内の該当するファイルを削除してみてください。

テーマは「themes」ディレクトリに、プラグインは「plugins」ディレクトリに入っています。

FileZillaでwp-content内を見たところ

FileZillaでwp-content内を見たところ

テーマとプラグインが干渉してしまったり、サーバーとの相性が悪いのが原因かもしれません。

テーマ変更はプラグインを全停止した状態で行い、テーマ変更後にひとつずつ有効化すると原因を突き止めやすいです。

また、プラグインをインストールするときは、公式サイトをチェックして更新が行われているか確認してください。更新が止まっているものは、WordPress の最新バージョンと合わないこともあります。

プラグイン更新後にエラーが出たとき

プラグインを更新してエラーが出たら、そのプラグインは使わないか、ひとつ前のバージョンに戻せば解消する可能性があります。

管理画面、もしくは FTP でエラーが出たプラグインをいったん削除してください。

つぎに、WordPress プラグインディレクトリ で該当するプラグインを探します。

Yoast SEO バージョン情報

「Developers」から旧バージョンをダウンロードしたら、解凍(展開)してから FTP で wp-content > plugins にアップロードしましょう。

セキュリティ対策のためにもプラグインの更新は欠かせませんが、更新通知が出てから数日後に更新したほうがよいかもしれませんね。

エラー情報を検索してから更新すれば、エラーを回避できる可能性が高いです。

テーマカスタマイズ後にエラーが出たとき

テーマをカスタマイズした直後に 500 エラーが出てしまったら、カスタマイズ前の状態に戻しましょう。

カスタマイズした場所がわかっている&バックアップファイルがあるなら簡単です。管理画面のテーマ編集から該当ファイルを丸ごと入れ替えるか、FTP でファイルを上書きします。

「テーマの編集」でコードを入れ替える

「テーマの編集」で該当ファイルの中身を全削除してバックアップファイルをコピペする

FTP で上書きする場合は、wp-content > themes > テーマ名 と進んでいって該当ファイルを探します。

できれば、管理画面からいきなりカスタマイズするのではなく、ローカルにテスト環境を作って作業するのがおすすめです。

なお、functions.php のカスタマイズに失敗すると高確率で管理画面に入れなくなるので、必ず FTP ですぐ元に戻せる状態にしておいてください。

僕もいまだにドキドキします 笑

.htaccess編集後にエラーが出たとき

.htaccess を編集した直後にエラーが出たときも、テーマファイルと同じく、FTP で上書きすれば元に戻ります。

編集に失敗するとブログが表示されない(500 エラー・404 エラー)ほか、管理画面にログインできない、サブドメインのサイトに影響するなど、.htaccess は取り扱い要注意のファイルです。

必ずバックアップをとってから作業してくださいね。

.htaccess 内に書き込みを行うプラグインもありますので、バックアップファイルから復元したあとはプラグインが正常に動いているかチェックしましょう。

もし元に戻したのにブログが表示されないときは、「パーマリンク設定」で設定が変わっていないことを確認し、その状態で「変更を保存」ボタンを押せば復旧することがあります。

パーマリンク設定を変えずに変更を保存ボタンを押す

ちなみに、500 エラーが出たとご相談いただいてチェックすると、「全角スペースが入っていた」という編集ミスがけっこう多いです。

.htaccess カスタマイズ用のコードが紹介されていて、それをそのままコピペしたら全角スペースだらけだったり、誤って最終行に全角スペースを入れたまま保存してしまったり、という感じですね。

コードを編集するさいはテキストエディタを使うようにしてください。スペースの有無もチェックできます。

.htaccessに全角スペースが入っている例

全角スペースがひとつでも入っていると500エラーになる

テーマのバックアップファイルがないときはどうする?

バックアップファイルがあれば FTP で上書きして元に戻せますが、バックアップなしに作業を進めてエラーが出たときはどうすればよいでしょうか。

この場合は、今までカスタマイズしてきた部分をあきらめてリセットするしかありません。

テーマをカスタマイズしていたのであれば、PC に保存してあるテーマ内のファイルを使って FTP で上書きします。あちこち触ってどこをいじっていたかわからないときは、全ファイルを上書きするか、いったんテーマを削除します。

FTPで全ファイルを上書き

どこを調整したかわからないときは全ファイルを上書きするのが早い…

テーマファイルが手元にない場合は、あらためて素のテーマファイルをダウンロードしましょう。

すでにテーマの配布が終わっていてどこからもダウンロードできない状況であれば、残念ながら別のテーマに変えるしかありません(制作者に連絡をとればもしかしたら提供してくれるかもしれませんが・・・)。

.htaccessのバックアップがないときはどうする?

.htaccess はテーマファイルからの復元ができません。

もしバックアップファイルがないときは、こちらのコードを使ってみてください。

手順は次のとおりです。

  1. コードをテキストエディタにコピペし、htaccess.txt というファイル名でアップロード
  2. サーバーの .htaccess を削除
  3. htaccess.txt を .htaccess にリネーム

ただし、エックスサーバーは先頭数行に固有の記述が必要です(ルートのみ)。

PHP 5.6 で PHP 高速化設定(FastCGI 化)が ON になっていると、このようになります。

どうしても復旧しないときは、サーバーに問い合わせるのが確実です。

.htaccess 編集によるエラーであれば中身(記事など)は無事だと思いますから、あきらめて全削除する前に復旧を試みたほうがよいですよ。

500 Internal Server Error解決策まとめ

以上、WordPress で 500 Internal Server Error が出る原因と解決方法でした。

おそらく .htaccess の編集ミスが原因になっていることがほとんどだと思います。テーマカスタマイズに失敗すると 500 エラーではなく他のエラーになるかもしれませんが、基本的な対応方法は同じです。

WordPress のトラブルは細かいケースを挙げればキリがありませんし、サーバーによって微妙に対応が異なってきます。

公開して間もないブログなら潔く全てリセットでもよいですが、ピンチはチャンスと考えて復旧作業に取り組んでみてください。今後同じような事態に遭遇しても、落ち着いて対処できるようになるはずです。

いきなりブログが表示されなくなったら、慣れていてもあわてますけどね・・・。そんなときのためにも、やっぱりバックアップは欠かせません。一度手動でバックアップを行って、WordPress の構成をなんとなくでもよいのでつかんでおきましょう。

 WordPress初心者でも簡単にできるバックアップ方法

習うより慣れろ、です。

それでは、また。