エラー処理

これまで E_ERROR となっていた内容のうちのいくつかについて、 ユーザー定義のエラーハンドラで処理できるようになりました。これは E_RECOVERABLE_ERROR で表され、ハンドラを作成しなかった場合は、 E_ERROR と同様に振る舞います。 この型のエラーは、ログには Catchable fatal error と記録されます。

この変更によって、 error_reporting の定数 E_ALL の値は 6143 となりました。 以前は、この値は 2047 でした。PHP の定数は PHP の外部では使用できないので、 外部でこの整数値を指定していることもあるでしょう。その場合は値を変更する必要があります。 たとえば error_reporting の設定を httpd.conf あるいは .htaccess で行っている場合は、値を適切に変更する必要があります。 また、PHP スクリプト内で定数ではなく値自体を指定している場合も同様です。

この変更の副作用として、 track_errors が On の場合にエラーメッセージが重複してしまうことがあるようになりました。 これを防ぐため、エラーハンドラで $php_errormsg を設定した際には false を返さなければならないようになりました。 これにより、さまざまなレベルのメッセージをより精密に制御できるようになります。