error_reportingは、php.iniの中に書かれている設定で、どのレベルのエラーを出力するかの設定です。このE_STRICTのエラーは、php5でphp4の書式で記述されているプログラムを実行すると、大量に出ます。static定義されていないメソッドを、クラス名::メソッド名で呼んだりしたときに出るのです。
E_ALLは、全部のエラーを出力してねっていう設定です。
これまでは、”E_ALL & ~E_NOTICE”とかでNOTICEメッセージを抑止している方もいたと思います。このE_ALLのなかに、E_STRICTで表示されるメッセージは含まれていなかったのです。今まで。それが、php5.4からは、E_ALLに含まれることになりました。
php5.4に上げた途端エラーメッセージが大量に!って場面に遭遇するのです。
PAER使っている方は、必ず遭遇するのではないでしょうか。php4でも動作するように作られているので。
E_STRICTのエラーを表示しないためには、以下のように記述します。
error_reporting = E_ALL & ~E_STRICT
php.iniのコメントでも親切に例がのってました。
; Common Values:
; E_ALL (Show all errors, warnings and notices including coding standards.)
; E_ALL & ~E_NOTICE (Show all errors, except for notices)
; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED <= こことか
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT <= こことか
; http://php.net/error-reporting
; error_reporting = E_ALL | E_STRICT
error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED
php4から持ってきたプログラムがうまく動かないと聞かれて調べてたんですが、勉強になりました。
以下のサイトを参考にさせて頂き、大変ありがたかったです。
http://developer.cybozu.co.jp/tech/?p=982
http://vivit-jc.hatenablog.com/entry/2013/02/12/210950
http://blog.gufii.net/weblog/archives/19