PHPのエラーで500 Internal Server Errorが返される

PHPのエラーで500 Internal Server Errorが返される。

今回の問題は単純でいて難しい問題だった。ここ二週間ほど、かなりの時間を使ってしまった。

まず最初に問題が起こった。

あるリクエストに対して500 Internal Server Errorが返ってくるようになった。

それなりにコードのアップデートを行ったあとだったのでこの辺が原因だろうという予測はついたのだが、状況が複雑だった。

リクエストごとに200の正常な返答と、500のエラーとが混在して返ってきていたのだ。

というのもこのとき、二つのサーバを負荷分散のためmod_proxyで振り分けしていたのだが、このうちの一方のみから500が返答されるようになっていた。

NFSを通して一つのファイルを利用しているため、エラーのコードが片方にのみ混ざっていることはない。

ホスト phpのバージョン
エラーのあるホスト php5-5.3.3_2        PHP Scripting Language
正常に動くホスト php52-5.2.14        PHP Scripting Language
テストのホスト(エラー) php5-5.3.3_2        PHP Scripting Language

どうやらPHPの5.3系列でエラーになっているような雰囲気ではあるんだけど、実は応答によっては200でレスポンスヘッダ、レスポンスボディが全く空のものが返ってきたりして何ともテストしにくい状況に。

テスト環境でも試していたけれど500が返ってくることに。printデバッグもうまくいかない。

php_errorにもエラーログが残らず、サッパリ訳がわからない状態になってしまった。

と、ひょんなことでdisplay_errosがoffになっていることに気づく。じつはテスト環境では本番環境への前テストとしてdisplay_errorsをoffにして運用していたのだ。

これをonにするとエラーが出てきた。

これにて一件落着っぽい。

ちなみに5.3へ建前上は移行したんだけれど、5.3独特のエラーを見つけるためというかなんというか、ってことで両方の環境を残している。今回はこれはよかったのか、わるかったのか・・・。

コメントを残す