PHPで500エラー返すと真っ白で表示されない、発生した原因と対策

スポンサーリンク
PHP

サーバーで動かしていたPHPのプログラムで500エラーが発生してしまい、ブラウザで表示されなくなったので、原因と対策を調べてみました。

HTTP エラー500 (Internal Server Error) の意味

500 Internal Server Error (サーバ内部エラー) の意味は以下の通りです。

500 Internal Server Error (サーバ内部エラー) の意味、原因と対処、解決方法
パソコンのブラウザで、こんなエラーメッセージが出て来ました。 スマートフォンでも同じエラーが発生します。 500 Internal Server Error この意味や原因は何でしょうか?解決策、対処方法はある...

 

これはサーバーのエラーなので、サーバープログラムを修正する必要があります。

 

PHPでheader関数を使って、500エラー 発生させる

PHPには、headerという便利な関数があります。

header
(PHP 4, PHP 5, PHP 7)

header — 生の HTTP ヘッダを送信する

PHP: header - Manual

 

PHPでheaderを使って、500ページ(Internal Server Error)を表示する方法は下記の通りです。

 

このPHPをブラウザで起動すると、以下のようになります。

xxxx.php:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error)

 

.htaccessをおくだけで500 Internal Server Error

.htaccessをおくだけで「500 Internal Server Error」となることもあるようです。

原因として以下が考えられます。

①htaccessの記述ミス

PHPを使うための以下のような記述がされてなかったり等、いろんな要因が考えらます。

AddHandler x-httpd-php5 .php .phps

 

②パーミッションの設定ミス

chmodで、755にすればよいはずです。

PHP 500 返すと、真っ白で表示されない

PHPのプログラムで、エラー500を返すと、真っ白になって以下のように表示されます。

 

このページは動作していません
localhost では現在このリクエストを処理できません。
HTTP ERROR 500

PHP 500エラーのログは?

PHP 500のエラーはログから調べることが出来るのでしょうか?

Apache WEBサーバーでは、アクセスログとエラーログの2個のログを生成します。

 

ログの場所は、以下のような場所にあります。

/var/log/httpd/access_log
/var/log/httpd/error_log

 

PHP 500のエラーはエラーログではなくて、アクセスログに以下のように書かれます。

 

残念ながら、これではエラーの原因はわかりませんね。

PHP 500エラー 表示されない?原因は?

PHPが500エラーを吐いても何が原因でエラーを吐いているのかわかりません。

そこで、頭に下記の一文を書くとエラー内容を表示してくれます。

 

これで、PHPでエラー500が発生すると、ブラウザでエラーの箇所を表示してくれるようになります。

 

 

コメント