500 Internal Server Error (サーバ内部エラー) の意味、原因と対処、解決方法

パソコンのブラウザで、こんなエラーメッセージが出て来ました。

スマートフォンでも同じエラーが発生します。

500 Internal Server Error

この意味や原因は何でしょうか?解決策、対処方法はあるのでしょうか?

スポンサーリンク
スポンサーリンク

500 Internal Server Error (サーバー内部エラー) とは?意味と原因

500は、HTTPのステータスコードの一つであり、CGIとして動作させているプログラムに文法エラーがあったり、設定に誤りがあった場合などに返されます。

HTTPのステータスコードの500番台、5xx系はサーバー側のエラーで使われます。

500 Internal Server Errorの解決策

これはサーバー側のエラーなので、クライアント側では何も出来ません。

つまり、ユーザー側で対処方法とか解決方法はありません。

500はサーバー側の原因なのでサーバー側で原因を調べてみます。

例えば、こんなミスが考えられます。

  • .htaccess に php_falg, php_value を使用している
  • 指定されたページの CGI が異常終了
  • 指定されたページの CGI のパーミッション間違い
  • 指定されたページの CGI が間違ったモードで転送されている
  • 転送モードを間違えている
  • 命令文の終わりの 「 ; 」 が抜けている

詳細に見てみましょう。

PHPが原因の場合

php.iniファイルの、error_reporting、display_errors、 display_startup_errors設定をチェックしてみてください。

それぞれ、E_ALL と"On"にセットされている必要があります。

公開用のサーバーでは上記の設定を変更させてweb上にエラー内容を表示させるべきではありません。

管理者だけがエラーを確認出来るように、log_errorsを使用するべきです。

もし、一部のスクリプトで一時的にエラーを確認したい場合には、下記のコードをスクリプトの冒頭に配置すると良いでしょう。

上記を設定してサーバーを再起動します。

CGIが原因の場合

CGIが動作しない原因と解決策は次の通りです。

CGIが動作するディレクトリ内に設置されていない

独自CGIを動作させることができるサーバーと出来ないサーバーがあり、CGIを動作させることが出来るディレクトリも予めサーバーで設定されています。

CGIを実行することが出来ないディレクトリにCGIファイルを設置しても動作させることは出来ません。
このケースの場合、独自CGIが動作し、CGIを動作させることが出来るディレクトリにFTPで転送する必要があります。

Perlへのパスに誤りがある

各CGIファイルの1行目にPerlへのパスが記述されています。

このPerlへのパス「#!/usr/bin/perl」などはサーバーによって決まっていますので、サーバー

管理者から指定されたパス以外では動作しません。

このケースの場合、動作しなかったCGIファイルをWindowsのメモ帳で開き、Perlのパスを確認します。

パスの誤りを修正し、上書き、FTPでサーバーに転送します。

パーミッション(アクセス権)の設定に誤りがある

アクセス権はサーバー環境とCGIの動作によって異なります。

CGI配布サイトやサーバーの説明ページなどにアクセス権が書かれていますが、必ずしもそのアクセス権で動作するものではございません。

また、CGIはデータファイルへ書き込む場合が多く、データファイルやディレクトリのアクセス権にも注意が必要です。ディレクトリは、CGIが使用しているディレクトリとCGI全体が入っているディレクトリの設定がありますので、全体のディレクトリにもご注意願います。

このケースの場合、以下のアクセス権で動作しますので、アクセス権を変更して動作を確認します。

CGIファイル(拡張子が「.cgi」のファイル)・・・700、755
データファイル(拡張子「.dat」「.csv」など)・・・600、644、646
ディレクトリ(サーバー内のフォルダ)・・・755、757、777

ディレクトリ構造に誤りがある

CGIファイルやデータファイルのディレクトリ構造に誤りがある場合、CGIファイルはデータファイルが読めなくなり、エラーになります。

このケースの場合、CGIの作者が指定したディレクトリ構造に合わせて設置します。

FTPの転送モード

CGIやデータファイルはテキストモード(アスキーモード)で、GIFやJPEGなどの画像ファイルはバイナリモードで転送する必要があります。

FTPソフトには自動判定の機能が付いている場合、自動で転送すれば問題ありませんが「バイナリモードで転送」などのボタンを押して転送した場合、CGIファイルがバイナリモードで送信され、実行出来なくなってしまいます。

WordPressで500エラーが発生する場合

WordPressの場合、.htaccess ファイルのコードの記述に問題があると、サーバーエラー500を引き起こす場合があります。

.htaccessを見直してみてください。

Ajaxで500エラーが発生する場合

AjaxでPOST処理で、500 (Internal Server Error)と表示さる場合、js側ではなくサーバープログラムが間違っています。

IIS (Internet Information Services) の設定が原因の場合

IISが原因の場合、下記の原因が考えられます。

IIS でHTTPエラー 500.19 Internal Server Error エラーコード 0×80070021 の解決方法
IIS(インターネットインフォメーションサービス、Internet Information Services)で発生したエラーとその...

IIS でHTTPエラー 500.21 Internal Server Error エラーコード 0×8007000d の解決方法
IIS(インターネットインフォメーションサービス、Internet Information Services)で発生したエラ...

IIS でHTTPエラー 500.19 Internal Server Error エラーコード 0×800700b7 の解決方法
IIS(インターネットインフォメーションサービス、Internet Information Services)で発生したエラ...

スポンサーリンク
スポンサーリンク
スポンサーリンク

フォローする