500(Internal Server Error)エラーとは|原因・対処法・予防策を解説

  • 2024.06.21
       
500(Internal Server Error)エラーとは|原因・対処法・予防策を解説

500エラーは、Webサーバ内部でエラーが発生したことにより、指定のWebページが正常に表示できていないことを指すエラーです。その原因はさまざまで、原因によって対処方法も異なります。長期になると500エラーが機会損失やSEO対策などにおいて悪影響を及しかねないため、発生してしまった場合は早急に解決する必要があります。そのため、運用担当者はエラーの発生を事前に防止し、発生してしまった場合でも迅速にエラーを発見し、対策するのが重要です。本記事では500エラーの原因や原因別の対処法、エラーを予防する方法を解説します。ぜひWebサイト運用の役に立ててください。

目次

500エラーとは

500エラーとは、Webサーバ上でエラーが発生したことで、リクエストが正常に処理されなかったことを示すエラーコードです。ただ、このエラーコードはエラーの具体的な原因は明らかになっていない場合に表示されるコードです。サーバにエラーの原因があるため、運営担当者は迅速に対応する必要があります。

500エラーの表示

ブラウザOS、サーバによって500エラーの表示は異なりますが、基本的にステータスコードである「500」や「Internal Server Error」というステータスメッセージが表示されます。一般的な500エラーの表示例を以下に示します。

  • Internal Server Error
  • 500. That’s an error.
  • HTTP 500 – Internal Server Error
  • Server Error in ‘/’ Application
  • HTTP Error 500
  • 500 Internal Server Error. Sorry, something went wrong.
  • 500 Error. The server encountered an unexpected condition.
  • 500 Service Unavailable
  • HTTP 500 – Server Error
  • We’re sorry, but something went wrong on our end.

500エラーが発生する原因と対処法

500エラーが発生したら自身で原因を突き止めて迅速に対処する必要があります。500エラーは、サーバ関連のプログラムの不具合で発生するケースが多いです。主な原因を紹介します。

アクセス過多によりサーバに過剰な負荷がかかっている

一時的にWebページへのアクセス数が増加すると、サーバに負荷がかかり、500エラーが発生することがあります。

▶アクセスが落ち着くのを待つ

500エラーはサーバにエラーが発生している状態であり、Webページを訪れたユーザやサービスの提供側がそれ自体を対処をする術はありません。アクセスの集中が落ちつくとエラーも解消されるので一定時間をおいて再度アクセスする必要があります。一時的なアクセスで500エラーが発生した場合はリロードやキャッシュのクリアで改善する可能性があります。

▶アクセス制限・拒否

提供側は、このアクセス過多がスパムクローラによってアクセス負荷がかかっている場合にはアクセス制限や拒否設定を行います。

▶高速化設定

WordPressでWebページを作成している場合は、高速化設定ができているか確認しましょう。

▶Webサーバの強化

ただし、恒常的な過負荷によって500エラーが頻発する場合は別の対策が必要です。容量をユーザ同士で分配するレンタルサーバではよく起こりがちです。この場合、サーバのCPUやメモリのリソースが不足しているとことが考えられるため、サーバ容量を増やすスケールアップやサーバ台数を増やすことで負荷を分散させるスケールアウトなどの対策が必要になります。レンタルサーバの場合は、高耐久のサーバに乗り換えたり、契約を見直すなどして、サーバ容量を増やすことでアクセス数の増加に耐えられるようになります。また、CDNを使い、アクセスを分散させることでも解消できます。

PHPやCGIの記述ミス

PHPやCGIの記述ミスによるプログラムの処理エラーも、500エラーの原因の一つです。PHPはプログラミング言語の一つ、CGIはWebサーバ上でプログラムを動かす仕組みです。

また、PHPのバージョンが古くなり、サーバとの互換性がない場合やバージョン変更直後、ファイルが不足した場合でも同様のエラーが発生します。その場合は推奨されるサーバログファイルをチェックすることで原因を特定できたり、バージョンへのアップデートで解決する可能性もあります。

プログラムの記述ミスや、バージョンの非互換によるエラーが発生した場合、下記のようなログが表示されます。

  • syntax error
  • Call to undefined function ******()
  • failed to open stream
ログ考えられる原因
syntax errorタイプミスなどの文法ミス
閉じ括弧の欠如
セミコロンの欠落
Call to undefined function ()存在しない関数を呼び出している/関数のスペルミス
必要なファイルやライブラリが正常にインクルードされていない
failed to open streamファイルパスが間違っている
必要なファイルがサーバ上に存在しない

WordPressはPHPで開発されており、PHPやCGIの処理に問題があると500エラーが起こります。

▶Webアプリケーションの再起動

アプリケーションを再起動することで解決する場合があります。

▶ソフトウェアを更新する

バージョンの老朽化またはアップデート直後にエラーが発生した場合は、互換性に問題がないかチェックしたり、ソフトウェアのアップデートを行いましょう。これでも改善しない場合はコードに問題がある可能性が高いです。

▶コードの修正

エラーログをもとに修正箇所を探し、見つけたら迅速に修正し再リリースしましょう。記述ミス箇所の特定には更新を行ったプログラムから調べましょう。

.htaccessの記述ミス

.htaccessファイルに記述ミスがあると500エラーが起こります。.htaccessファイルはApacheサーバの動作を制御するファイルです。

よくある記述ミス考えられる原因
文法ミス最後の行の空行が設定できていない
ファイル内に全角スペースや全角文字が含まれている
不正なディレクティブApacheに存在しないディレクティブを使用している
古いバージョンのApacheでしかサポートされていないディレクティブを使用している
モジュールの未有効化ディレクティブの使用に必要なモジュールが有効化されていない
php_flagやphp_valueなどの、PHPに関する設定を.htaccessに記述している
不正なフラグの使用RewriteRuleやほかのディレクティブで使用するフラグが正しくない

▶コードの修正

Webサーバのエラーログを確認し、エラー箇所を特定しましょう。Apacheサーバはエラーログに詳細に情報が記録されています。また、モジュールを有効化する場合、Apacheの設定ファイルで該当のモジュールを有効化します。

修正箇所が見つらない場合は事前にバックアップを取ってから.htaccessファイルを初期化しましょう。

WordPressでWebページを作成している場合、プラグインやツールによって自動で書き換えられている可能性もあります。記述ミスが見つからない場合はバックアップを取り、.htaccessの初期化することで解消できる場合があります。また、パーミッションの設定不備やApacheの設定ミス、Digest認証の設定ミスもないか確認しましょう。

.htaccessファイルに関するエラーがある場合、エラーログに「Invalid command ‘*****’」や「Expected </IfModule> before end of configuration」などと書かれる可能性が高いです。

.htaccessファイルに関する記述ミスを探しても特定できない場合、事前にバックアップを取ってから初期化すると改善する場合もあります。

Googlebotの過剰なクローリング

GoogleにおけるWebサイトの表示順を決めるクローラのクローリングですが、通常のクローリングはWebサイトに負担がかからない程度で行われるので気にする必要はありません。しかし、まれにクローリング頻度が異常に高くなることがあるようです。クローリングの頻度が異常に高いと、アクセスが集中したのと同じようにサーバに負荷がかかり、500エラーが発生する場合があります。

▶Googleのクロール頻度を低く設定する

クロール頻度はある程度調整できます。管理画面から「Google の最大クロール頻度を制限する」を選択し、クロールの回数を設定できます。ただし、SEOにも影響が出る可能性があるのでこの設定は一時的な対処法としましょう。

パーミッション設定の不備

パーミッションとは、ファイルの実行権限の設定を指します。CGIやCGIのあるディレクトリ、.htaccessファイルなどをアップロードする際、パーミッション設定の不備によってサーバが正しく設定ができず、プログラムへのアクセスする権限が不足する場合も500エラーが出ます。

設定に不備があると正常に動作しなくなります。また、第三者が書き込み・実行できてしまうことにもなりうるので、危険です。

▶適切なパーミッションに設定

アップロードした.htaccessファイルやCGIファイルのパーミッション設定が間違っている場合は、適切なパーミッションに直すことでエラーを解決できます。

ファイルやディレクトリのパーミッションを確認し、不備があった場合は適切なパーミッションの数値を再度設定しましょう。

サーバには数値でパーミッションを指定できます。サーバの種類や設定によっても異なりますが、「755」や「644」などの値が一般的です。サーバのドキュメントやサポートを確認しましょう。

パーミッション本人(Owner)グループ(Group)他人(Other)
755
rwxr-xr-x
読み込み・書き込み・実行読み込み・実行読み込み・実行
644
rw-r–r–
読み込み・書き込み読み込み読み込み
700
rwx——
読み込み・書き込み・実行

WordPressの老朽化

PHPのバージョンとWordPressのプラグインやテーマのバージョンに違いがあると500エラーが出ます。プラグインやテーマを新しくインストールしたりアップデートした直後に発生する場合が多いです。必ず本番環境にアップする前に試しましょう。

▶プラグインやテーマのアップデート

プラグインやテーマを最新バージョンに更新したり利用を停止することで解決する場合があります。特定できない場合は互換性をチェックできるプラグインを利用しても良いでしょう。

特にバックアップを目的とするプラグインは容量も大きいので、データの保存期間を見直してサーバを圧迫するのを避けるのが重要です。

プラグインやツールによる書き換え

WordPressを利用している場合、.htaccessを直接編集していなくても、プラグインやツールによって自動で書き換えられているケースもあるので注意しましょう。

▶WordPressのアップロードやプラグインをチェック

プラグインを追加したり、アップデートした場合には、.htaccessに影響が出る場合があるので忘れずにチェックしましょう。

サーバの空き容量が少ない場合

サーバに空き容量が少なくても500エラーになることがあります。もしならなくても動作に支障が出るので空き容量を確保する必要があります。自動バックアップなどが容量を取っている可能性もあるので定期的に確認しましょう。

▶サーバ容量を増やす

不要なファイルを削除してサーバの空き容量を増やしたり、容量の大きいサーバに変更することで問題を解決できます。

サーバのメモリが不足している

サーバにはメモリの設定値が設定されていますがそれよりも容量の大きいファイルをアップロードすると500エラーが発生します。

▶設定値の変更

サーバのリソース状況を確認します。アップロード前に設定値を確認し、少ない場合は大きい値に設定しましょう。「memory_limit」項目がこれに該当します。項目自体がない場合には追記して設定する必要があります。ただし、値を大きくしすぎてもエラーになる可能性があるので注意が必要です。なお、必要なファイルが多く、サーバの容量を減らせないという場合には容量の多いサーバへの変更も検討しましょう。

500エラーが発生した場合の影響

500エラーはユーザの利便性のみならず、SEOにも悪影響を及ぼしかねないので発生した場合は迅速な対処が必要になります。

Webページを表示できなくなる

500エラーは、Webサーバがページやアプリケーションの処理を実行できず、利用しようとするユーザに対してサービスを提供できなくなるため、結果的に機会損失や自社サービスに対する信頼性の損失にもつながりかねません。

SEOに悪影響を及ぼす可能性がある

500エラーが表示されてもサイトの評価やSEOに直接的な影響するわけではありませんが、500エラーが表示されるとクローラがそこからWebサイト内クロールができなくなります。つまり、500エラーを放置すると検索エンジンから櫃の低いWebページであると判断され、検索順位が下がったり、検索エンジン上にインデックスされなくなるなど、SEOの評価を落とす恐れがあります。SEO(=Search Engine Optimization)とは検索エンジンの最適化のことで、Googleなどの検索エンジン上で自社のWebサイトを検索結果の順位を決めるアルゴリズムに最適化させる取り組みを指します。SEO対策を行うことで上位に表示させることができ、検索流入を増やすことができます。

500エラーを防止する方法

完全に防ぐことは難しいですが、可能な限り500エラーの発生を防ぐ必要があります。次の方法でエラーの発生を減らすことができるでしょう。

エラーログを監視・検知する

Webサーバのエラーログを監視し、問題が発生したら検知する仕組みを導入すれば問題が発生した場合でも素早く対処でき、大きな損失につながるリスクを軽減できます。

ソフトウェアの更新

Webサーバのソフトウェアやアプリケーションを常に最新のバージョンに更新することを心がけましょう。ただし、更新前に、テスト環境で十分に検証した上で、本番に反映することが大切です。

Webサーバのリソースの監視

500エラーは、Webサーバの容量不足やメモリ不足でも発生します。エラーが出てからではなく、あらかじめリソースの使用状況や残りのリソースをチェックし、十分なリソースを確保するようにしましょう。負荷が大きい場合はサーバの増強も検討しましょう。

500番台のHTTPステータスコード一覧

500エラーはエラーの原因が明確でない場合に返される汎用コードですが、5XXのエラーコードはより詳細にエラーの原因を示すコードになります。

500番台のステータスコードはサーバ側のエラーでリクエストが処理できていない状態を表します。サーバがリクエストに応えられない理由が並ぶので種類が多いです。

サーバでWordPressをはじめとするCMSを実行している場合は、インストールや更新の失敗、ソフトウェアやプラグインの互換性の不具合、サーバのアクセス権限の設定ミス、スクリプトが無限ループしてタイムアウトしたなどが考えられます。それでも解決しない場合はサーバ管理者に問い合わせる必要があります。

500番台のステータスコード

HTTPステータスコード意味
500(Internal Server Error)サーバ内部のエラー
501(Not Implemented)未実装のメソッドの使用
502(Bad Gateway)サーバの通信状態に問題がある
503(Service Unavailable)サービスの利用不可
504(Gateway Timeout)ゲートウェイのタイムアウト
505(HTTP Version Not Supported)サポート外のHTTPバージョン
506(Variant Also Negotiates)コンテンツネゴシエーション中のエラー
507(Insufficient Storage)容量不足
508(Loop Detected)ループ検出
510(Not Extended)拡張不可
511(Network Authentication Required)ネットワークに対する認証が必要
500(Internal Server Error)

サーバ内部でエラーが起きている状態を指します。

501(Not Implemented)

リクエストを遂行するための機能がサーバに実装されていない場合に表示されます。

502(Bad Gateway)

プロキシサーバなどの通信状態に問題がある場合に表示されます。

503(Service Unavailable)

アクセス集中による過負荷やメンテナンスなどによって一次的に該当のページにアクセスできない状態を指します。メンテナンスでサービスをストップさせている間には、意図的に503表示にするのが望ましいです。

504(Gateway Timeout)

リクエストに対してサーバからのレスポンスがなくタイムアウトした際に表示されます。

505(HTTP Version Not Supported)

クライアントにリクエストされたHTTPバージョンがサーバでサポートされていない場合に表示されます。

506(Variant Also Negotiates)

Transparent Content Negotiation in HTTPで定義された拡張ステータスコードです。

507(HTTP Version Not Supported)

サーバ側でリクエストを処理するだけの容量が不足している場合に表示されます。

508(HTTP Version Not Supported)

ループを検出した際に表示されます。

510(HTTP Version Not Supported)

拡張できないことを指す、An HTTP Extension Frameworkで定義される拡張ステータスコードです。

511(HTTP Version Not Supported)

ネットワークに対する認証が必要な場合に表示されます。

【一覧】HTTPステータスコードの意味を解説

まとめ

500エラーの原因はさまざまで、原因によって対処方法も異なります。一時的であればそれほど影響はありませんが、長期になると500エラーが機会損失やSEO対策などにおいて悪影響を及しかねないため、発生してしまった場合は早急に解決する必要があります。運用担当者はエラーの発生を事前に防止し、発生してしまった場合でも迅速にエラーを発見し、対策するのが重要です。もしリソースが足りないなどの場合は、サーバ容量の見直しなども検討しましょう。

ITスキルの習得方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

関連記事

     

Otherカテゴリの最新記事