サイトにアクセスした際、「500エラー(Internal Server Error)」が表示されてしまったことはないでしょうか。500エラーは、サーバ側に問題が発生したことを示すエラーコードです。
500エラーが発生した際、原因や解決策がわからず困ってしまったという経験も、サイト運営者ならば多いのではないでしょうか。
本記事では、500エラーの原因と解決方法を解説していきます。WordPressに特化した問題など、サイトの運営に役立つ知識についても詳しくお伝えしますので、ぜひ参考にしてください。
500エラー(Internal Server Error)とは?
500エラーとは、「Internal Server Error」のことでサーバ側に問題が発生したことを示すHTTPステータスコード(エラーコード)です。
サーバー自体に異常があるため、サイトを訪れたユーザーの求める処理が実行されません。また、サーバーという運営側の問題であるため、サイトを訪れたユーザーにできる対処法はありません。
ユーザーとしてサイトを訪問した際に500エラーが表示されるという場合は、サーバの問題が解決されるのを待ち、一定時間を空けてから再度アクセスしてみてください。
自らが運営しているサイトに500エラーが表示されるという場合は、迅速に対応する必要があります。500エラーをそのままにしておくと、その期間はサイト訪問者が内容を閲覧できないので、ユーザー離れにつながりかねません。
500エラーは、サーバやブラウザなど環境の違いによって、表示内容が異なってきます。
基本的にはステータスコードの”500″と”Internal Server Error”から構成されたメッセージが表示される場合が多いです。
表示されたメッセージだけでは、エラーの発生はわかるものの具体的な原因や対処法は判断できません。そのため、自分で原因を見つけ対処する必要があります。
500エラーはすぐに解決できるのか?
問題のある箇所を見付けることができれば、解決策もすぐにわかります。
500エラーは、PHP(Webページを生成するサーバのプログラミング言語)やCGI(Webサーバ上でプログラムを実行する仕組み)が原因で発生することが多いです。より詳細に原因が何であるのかを素早く突き止めることで、迅速にエラーが解除できるでしょう。
ここまで、迅速なエラー解除の重要性について述べてきましたが、以下でより詳しく解説します。
発生の原因がプログラム内の何か特定することが重要
500エラーをそのままにしておくと、サイトを利用するユーザーに直接影響を与えてしまうため迅速な対応が必要だと述べてきました。
さらに長期的に500エラーが解消されない場合、ユーザー離れだけではなく、SEOにもマイナスの影響が出る可能性があります。クロールエラーが続き、インデックス削除につながる危険性もあります。
500エラーが解消されないと、ユーザーがサイトを訪れる機会を減らすだけでなく、サイトそのものを危険にさらします。事態を早く認識し、迅速に対応することが重要です。エラーを解消するためには、問題発生の原因が何か特定することが大事になってきます。
例えば、直前にプログラムの編集を行った場合、その際に触れた箇所がエラーの原因となっている可能性が高いと当たりをつけることができます。ネットワークやレンタルサーバといった外部に原因がある場合は、サイト運営者では対応できません。外部がエラーに対応するまで待つことしかできないケースもあるでしょう。
しかし、原因がわかっていれば慌てる必要がありません。エラーや障害の情報をレンタルサーバやホスティングサービスのページで確認するようにしましょう。
自身が対応する必要のあるエラーなのか、そうでないものなのか、どちらにせよその原因を特定し適切な行動に移すことが重要です。
突然500エラーが発生してしまう主な原因は?
500エラーはWebサーバの問題、または、Webサイトの設定や編集が原因で発生することが多いです。
例えば、以下のような原因が挙げられます。
・アクセスの一時的な集中
・Googlebotによる過剰なクローリング
・PHPやCGI処理中の異常
・.htaccessの編集ミス
・パーミッションの設定ミス
・WordPressのプラグイン
それぞれ、詳しく解説していきます。
アクセスが一時的に集中したことによる影響
サイトへのアクセス数が一時的に集中している場合に、サーバに負荷がかかり500エラーが発生することがあります。
また類似したエラーとして、アクセス数が一時的に集中してしまい、サーバが処理できない状態になると表示される503エラー(Service Temporarily Unavailable)があります。
503エラーの場合、アクセスが集中した状態でなくなるとエラーが自動的に解消されるので、時間を置いて様子を見るしかありません。
しかし、サーバへの負荷によって500エラーが頻発する場合は注意が必要です。アクセス数が増加しても耐えられるような契約プランの見直しなどを行ってみてください。
また、アクセス負荷の原因そのものに対処できる場合もあります。
スパムクローラーなどが原因となっているケース、WordPressサイトが最適化されていないケースなどです。原因のスパムのアクセス制限や拒否の設定、WordPressサイトの高速化設定など確認してみましょう。
Googlebotの過度なクローリング
Googleではサイトの検索情報を収集するため、Googlebotというプログラム(クローラー)を導入しています。このクローラーがサイトに訪問する頻度が高くなることで、500エラーの発生につながるケースもあります。
通常クローリングはサイトに負担をかけないような頻度で行われます。しかし、稀に異常な頻度でサイトをクローリングが行われ、アクセスが集中したときと同じような負荷がかかることがあるのです。
このような状況になった場合、サイト運営者側ができることはありません。クローラーの巡回が落ち着き、エラーが表示されなくなるのを待ちましょう。
Googlebotの過度なクローリング により500エラーが発生してしまってから、サイト運営者側が何か対応することは難しいですが、普段からクロールの頻度を調整しておくことは可能です。Googleの管理画面に入り、「Googlebot のクロール頻度を下げる」という項目を調整することでクロールの回数を減らすことができます。
.htaccessファイルの編集ミス
.htaccessのファイルが誤った形で編集されている場合も、500エラーの原因となります。
例えば、パスがフルパスの記述になっていないことで正しくプログラムが呼び出せず、エラーが表示されてしまうケース、アップロードする際のパーミッションの設定が誤っているためプログラムが実行されないケースなどがあります。
他にも、次のような編集ミスが原因となるケースがあるので注意しましょう。
・不適切な改行、空行、スペースが存在している
・最後の空行の設定が抜けている
・ファイル内に全角スペースや全角文字が存在している
・コードに誤りがある
500エラーが確認されたら、.htaccessを見直し、編集ミスしている部分がないか確認しましょう。エラー発生前に.htaccessを編集した場合は、特に注意が必要です。
もし、修正すべき箇所がうまく見つけられない場合は、バックアップを取ってから.htaccessを初期化する方法もあります。.htaccess を元の状態に戻すことで、問題なく復活するというケースもあるためです。
また、元のデータと比較することで誤った編集箇所を見つけやすくなります。.htaccessに問題があった場合に有効な方法ですので、万が一に備えてバックアップは必ず取って行ってください。
CGIやPHPの処理中に異常が発生
CGIやPHPといったプログラムに誤りがある場合も、500エラーが発生します。
CGIとPHPを簡単に説明すると、それぞれ以下のようになります。
・CGI:Webサーバ上でプログラムを実行する仕組み
・PHP:Webページを生成するサーバのプログラミング言語
サイト作成にはWordPressが多く使用されています。このWordPressのシステムはPHPで開発されているため、PHPとCGIの処理に問題があると500エラーが発生します。
例えば、記述ミスといったプログラムの問題やバージョンが合っていないという問題、ファイルが不足しているなどがエラーの原因となります。
PHPの書き換えや更新を行った後に、500エラーが発生した場合は、編集内容に誤りがあった可能性が高いでしょう。修正が必要な箇所を見つけたら、迅速に対応しましょう。
また、PHPのバージョンが古いままである場合、直前にバージョン変更した場合も、エラーの原因となっている可能性が高いです。サーバのログファイルをチェックすると原因が特定できることがあるので、確認してみてください。
PHPのバージョン相違でエラーが発生している場合は、推奨のバージョンを確認し、
アップデートを行ってみてください。
パーミッションの設定ミス
ファイルを実行するための権限設定や属性のことを、パーミッションと呼びます。パーミッションは、サーバ上のファイルやディレクトリごとに設定されます。これは、Webサーバ上のファイルやディレクトリが、アクセスした不特定多数の人によって勝手に消去されたり、書き換えられたりしないようにするものです。
先に触れた、CGIファイルや.htaccessなどにも、パーミッションが設定されています。
これらのパーミッション設定を誤っている場合に500エラーが発生する可能性があります。パーミッションの設定に不備がある場合は、適切なパーミッションに修正することで500エラーは解消できます。
レンタルサーバを利用している場合は、レンタルサーバごとに推奨されているパーミッションがあるため、そちらに合わせて設定することが必要です。レンタルサーバでは、セキュリティ対策として、特殊なパーミッションが推奨されていることがあります。
CGIを動かす場合は、レンタルサーバが指定したパーミッションに設定されているかどうか、事前に確認しましょう。
WordPressでよく起きる500エラーの原因
WordPressを使用してWebサイトを構築している方ならば、500エラーに出くわす場面も多いかもしれません。自身で作ったサイトに500エラーで入れなくなるといった経験もあると思います。
ここでは、WordPressユーザー向けの500エラー対処法について解説していきます。
まず、WordPressを使用していて500エラーが発生した場合に考えられる主な原因について、以下のようなことが挙げられます。
・PHPのバージョンに変更があった
・WordPressのアップデートがあった
・テーマのアップデートがあった
・プラグインの更新や追加があった
・テーマのカスタマイズ(PHP編集)を行った
・バックアッププラグインの挙動によるもの
中でも、テーマのカスタマイズやPHPの編集ミスなどは、エラーの原因になりやすいといえます。またプラグイン同士の相性、プラグインとPHPのバージョンの互換性が、エラーの原因となることがあります。
この他にも、バックアップ系のプラグインによってバックアップファイルが肥大化し、サーバを圧迫したことでエラーが発生するというケースもあります。
ご自身のWebサイトに合わせて、注意点を押さえておくことをおすすめします。あらかじめ500エラーの原因になりやすいことがわかっていれば、500エラーが発生しても素早い解決につなげることができます。
500エラーを解決する方法を把握しておこう
ここからは、500エラーを解決するより具体的な方法を紹介していきます。
まずは、どういった原因で500エラーが発生したのか確認が必要です。サーバのログファイルを確認することで原因を知ることができます。原因を確認しても、その内容に心あたりがない場合、エラーログをダウンロードしてより詳細を確認していきましょう。
大量の負荷が一時的に発生した場合の対処法
大量の負荷が一時的にかかり、エラーが生じている場合は、原因であるアクセスが減少することで解消されますので、それほど心配する必要はありません。ただし、同じようなケースが何度も高い頻度で起こる場合は、負荷がかかっている原因を確認しておく必要があります。
スパムクローラーなどが原因で、アクセス数が増加し負荷がかかっている場合は、.htaccessなどでアクセス拒否や制限をかけるといった対策が可能です。
サーバー自体がアクセスの急増に耐えられなくなっている場合は、契約プランの見直しを行って、サーバー自体を強いものにすることも検討してみるとよいでしょう。WordPressサイトの問題である場合、高速化の設定ができているかを確認しましょう。
大量の負荷により500エラーが発生してしまう場合、何か対処法を打つべきかどうかの判断は、それが今後も起こりうるのかどうかに合わせて見極めて行うとよいでしょう。
先に述べた通り、短時間で自然に解決するエラーであればそれほど影響はありません。サイト運営者側では対応できず、待つしかないものもあります。しかし、長期化・頻発してしまうと、ユーザー離れやSEOにも悪影響を及ぼす可能性があります。
今後も同様の事象が発生するか、どの程度の頻度で発生するか、それらを想定して対処してください。
Googlebotの過剰なクロール頻度に対する対策
Googlebotのクロール頻度が過剰となり、アクセスが集中したときと同じような負荷がかかってしまった結果、500エラーが発生してしまうという場合は、クロールの巡回が落ち着いてサーバが通常どおりになり、エラーが解消されるのを待ちましょう。Googlebotが原因でエラーが発生している際、サイト運営者側ができることはありません。
しかしエラーが発生してから何か対処することは難しいですが、普段からクロールの頻度を調整しておくことは可能です。Google管理画面から「Googlebot のクロール頻度を下げる」を選択することでクロールの回数を減らすことができます。
ただ、ここで注意しておきたい点は、クロール頻度を下げるということは、サイト情報をクローラーに読み取ってもらう機会の減少につながるということです。
クローラーは、Web上の情報を収集し、ユーザーに有益なサイトかどうかを判断し、評価の高いサイトが表示されやすくなるような仕組みづくりに役立っています。クローラーが検索しづらいサイトでは、検索順位や検索流入が向上しづらいのです。
500エラーの原因とクローラーの役割を理解した上で、ご自身のサイトに合った対処を行ってください。
.htaccessの編集ミスによる原因だった際の解決方法
先に、.htaccess編集ミスの例をご紹介しました。エラーが発生する直前に.htaccessを編集した場合には特に、.htaccessを見直し、編集ミスしている部分がないか確認しましょう。
・フルパスになっていない
・アップロードする際のパーミッションの設定が誤っている
・不適切な改行、空行、スペースが存在している
・最後の空行の設定が抜けている
・ファイル内に全角スペースや全角文字が存在している
・コードに誤りがある
こういった主なミスをチェックしても、どこが誤っているかわからない場合、バックアップを取った上で.htaccessを初期化する方法があります。.htaccess を元の状態に戻すことで、問題なく復活する可能性もゼロではありません。
また、元のデータを比較することで編集ミスを見つけやすくなります。.htaccessに問題がある場合に有効な方法ですので、万が一に備えてバックアップは必ず取って行ってください。
WordPressを使用している場合には、直接.htaccessを編集していなくても、プラグインやツールによって、.htaccessが自動的に書き換えられていることがあります。エラーが発生する直前に、プラグインを追加した、あるいはアップデートした場合は、.htaccessへの影響をチェックしてみてください。
PHPのバージョンによる原因だった際の解決方法
PHPのバージョンが原因で500エラーが発生している場合は、サーバのログファイルをチェックすると原因が特定できることがあるので確認してみてください。PHPのバージョンが古いことが原因でエラーが発生しているのであれば、サーバの管理画面などから推奨されているバージョンを確認し、アップデートを行ってみてください。
500エラーに関係する以外に、古いバージョンのPHPを使用し続けることはセキュリティ面でも問題があります。最新のものと比較すると性能に劣り、ハッキングのリスクなどを高めてしまいます。 ハッキングされてしまうと、サイトが閲覧できなくなる、表示が重くなる、不正なプログラムやファイルを設置されるなど、様々なトラブルにつながる危険性があります。
また、推奨環境に合わせてPHPのバージョンをアップデートしてもエラーが発生することもあります。その場合は、インストールされているプラグインやテーマとの互換性が原因になっていることもあります。
WordPressの場合は、「PHP Compatibility Checker」などのプラグインを使用することで、PHPと他システムの互換性を調べることができます。
パーミッション設定による原因の解決方法
CGIや.htaccessのパーミッション(ファイルを実行するための権限設定や属性)の設定が誤っている場合は、適切なパーミッションに設定し直すことで解決できます。
一般的に正しいパーミッションを設定していても、レンタルサーバを利用している場合は動作しないことがあります。レンタルサーバごとに推奨されているパーミッションが異なるためです。それぞれが推奨しているものに合わせて設定してください。
パーミッションの設定は、FTPソフトを使いサーバに適したパーミッションで再度アップロードする、もしくは、サーバのファイル管理(ファイルマネージャー)を利用することで可能です。
パーミッションに関係するエラーとして、403エラー(Forbidden)があります。パーミッションの設定上、読み込みを許可されていないユーザーがファイルにアクセスすると発生するものです。意図して設定されることを想定したものですが、設定ミスによって起きやすいエラーともされています。
サイト構築時の権限設定はもちろん、500エラーの対応のように設定を変更する際にも、誤って発生させてしまいやすいエラーです。パーミッションを変更する際は、注意しましょう。
WordPressのプラグインやテーマによる原因の解決法
WordPressのプラグインやテーマと、PHPのバージョンが合わないことが原因でエラーが発生する場合、主な解決法は以下です。
・WordPressプラグイン(テーマ)を停止する
・WordPressプラグイン(テーマ)をアップデートする
どのプラグインが原因なのか特定できないという場合は、PHPバージョンの互換性をチェックするプラグインを使用してみてください。
また、バックアップ系のプラグインによってバックアップデータが肥大化しサーバを圧迫していることが原因であれば、次のような解決策を取ることができます。
・プラグインの停止する、または、バックアップ作業の停止する
・ファイルマネージャーやFTPソフトでバックアップファイルを削除する
この方法でデータの肥大化が止まったら、今後バックアップデータがサーバを圧迫しないよう、対策を練るとよいでしょう。バックアップデータの保存期限を短く設定する、バックアップ系のプラグインそのものを見直す、不要なものを削除するなどがあります。
WordPressには便利なプラグインが多く存在しますが、プラグインが原因でエラーが起きてしまう、メンテナンスに時間がかかるというケースも少なくありません。ご自身のサイトにあったものを適切な数だけ導入することが重要です。
一般的なHTTPステータスコードを紹介
ここでは、代表的なHTTPステータスコードについて紹介しましょう。
・200 OK:サーバリクエストが正しく処理され、ページが表示されている状態です。通常表示されているWebページの裏側で、「200 OK」が返されています。 ・202 Accepted:サーバがリクエストを受け取っているが、処理が完了していない状態です。外部プログラムでデータ生成する場合などに返されるステータスコードです。 |
・301 Moved Permanently:リクエストページが移動されている場合に返されるステータスコードです。サイトリニューアルでURLを変更する時などに利用します。 ・302 Found:301 Moved Permanentlyと同様に、リクエストページが移動されている場合に返されるステータスコードですが、こちらは一時的な移動を表します。期間限定ページを使用する場合などに利用します。 |
・403 Forbidden:権限を付与された特定のユーザーのみページにアクセスが許可されている状態で、権限が無いユーザーが閲覧できない状態を表します。 ・404 Not Found:該当ページがない、またはサーバが落ちている状態です。 |
・500 Internal Server Error:サーバ内部にエラーが発生している状態です。 ・502 Bad Gateway:サーバの入り口であるゲートウェイやプロキシサーバが、不正なリクエストを受け取り、そのリクエストを拒否したことを表します。 ・503 Service Unavailable:一時的にページが利用できないときに返されるステータスコードです。 |
まとめ
この記事では、500エラー(Internal Server Error)の原因と解決方法について解説してきました。
500エラーは、速やかに対応すれば大きな問題になるものではありません。しかし、長期間放置してしまうとSEOへの悪影響やインデックス削除につながります。500エラーが発生した場合、まずは落ち着いて原因を探りましょう。そして、解決策を講じましょう。
せひ、本記事でご紹介した方法をご自身のサイト運営に活用してみてください。