PHPの500エラーって何?
PHPに限らず?
他にも404エラーとか。
って方向けの記事です。
PHPの500エラーとは
WEBブラウザでWEBサイトを開いたとき、URLを元にHTTP通信を行い、対象のページを構築しサーバーから返してもらいます。
そのとき、プログラムが間違っていてHTMLを構築処理を継続できない状態になることを500エラーといいます。
500というのは見て分かる通りコードです。
HTTPのレスポンスコードといいます。
平たく言えば、そのWEBサイトは「バグってる」ってことです。
ちなみに404エラーというのも同じとうにHTTPのレスポンスコードです。
404はURLで指定したページが無い場合に返すコードになります。
PHPの500エラーの原因
原因の多くは動作しているWEBアプリケーションが壊れているだけです。
ただ稀にサーバーを動かすApacheなどに不具合が発生しエラーになるケースもあります。
今まで正常に動いていて、何も触っていないのに急に動かなくなった場合はこのケースでしょう。(一応サイトのプログラムも確認はしてね)
その場合はWEBプログラマーとしてはどうしようもありません。
サーバー会社の復旧を待ちましょう。
Apacheと言っても、.htaccessに関してはこちらで操作するものです。
そこに不具合が無いかは確認が必要です。
あとディレクトリのパーミッションもそうですが、このケースはあまり見たことないです。
そして最初にも書いたように、大半の原因はWEBアプリケーションを構成しているプログラムにあります。
どのページでエラーになったか。
1ページだけならそのページを開くときに実行されるプログラムを追いかけます。
全てのページなら共通部分にエラーがある可能性があります。
どこでエラーが出ているか分からない場合は
1 2 |
ini_set("display_errors", 1); error_reporting(E_ALL); |
で特定するような人も多いですが、プログラムを見た方が早いし勉強になります。
自分で作ったものならある程度把握できるでしょうし。
なんでもかんでもツールに頼らないほうがいいと思います。
PHPの500エラーを意図的に発生させる
500エラーですが、まったく発生しないWEBサイトなんて世の中にありません。
100%バグの無い開発をお客さんは求め、それに答えるようにしっかりテストする必要はありますが、どうしてもバグは出てしまうものです。
そういった予期せぬ不具合が発生した場合にも、それすらも想定してエラーハンドリングしたりする必要がエンジニアには求められます。
そうなると当然500エラーのバグが発生した場合のテストも必要になります。
意図的に500エラーにする必要があるわけですね。
そんなときはヘッダー関数で以下のように定義すると500エラーになります。
1 2 |
<?php header('HTTP/1.1 500 Internal Server Error'); |
何かの参考になればどうぞ。
まとめ
500エラーはWEBシステムの不具合。
WEBシステムと言っても、WEBサーバーアプリケーションのApacheや、サーバー設定の不具合の可能性もあります。
自分の手の届かない(権限の無い)場合はサーバー管理者に問い合わせましょう。
しかし大半は自分で作ったプログラムに問題があります。
バグを特定して直してしまいましょう。
コメントを残す