PHPで$_SERVERを参照すると不正終了する。

PHP Version 5.3.28 で作成したプログラムが環境によって挙動がおかしい。 PHPからの応答が無くなってしまうようだ。 ソースのN行目でエラー!のようなエラーが発生するわけでもなく、応答がなくなってしまう&Debuggerが使えない環境なので、コツコツとログを入れておかしい箇所を調べてみた。すると、

$adr = $_SERVER["REMOTE_ADDR"];

の箇所で応答がなくなる。 単に$_SERVERを読み取ろうとしている箇所で停止するようだ。 このロジック、別のリクエストの時にも実行されるが、その時は別に問題なく読み取れる。 また、違うサーバーでは同じロジック、同じリクエスト時にも問題がない。 PHPが停止してしまうのは1つのサーバーだけだ。 もっと調べてみると、このサーバーだけ、PHPのバージョンが異なり、eAccelerator Version 0.9.6.1が動作している。 試しに、eAccelerator をdisableにしてみたところ、$_SERVERを読み取りでPHPが停止する問題は解消された。

/etc/php.d/eaccelerator.ini

eaccelerator.enable="0"

今回のリクエスト・このアクセスの場合、eAcceleratorがたまたま$_SERVERアクセスで不正終了してしまうのだろうか。 根本原因は不明だが、とりあえずeAccelerator をOFFで実行しよう。 そのうち、Zend OPcacheとかも検討してみよう。