ローカルで Xampp を動かして、テスト用に使っています。
先日、Xampp 1.7.4 を 1.7.7 へバージョンアップしました。含まれるサーバーのバージョンは
XAMPP1.7.4(Apache 2.2.17、PHP 5.3.5、MySQL 5.5.8)です。この結果、PHP のエラー
XAMPP1.7.7(Apache 2.2.21、PHP 5.3.8、MySQL 5.5.16)
Strict Standards: Declaration of dbTable::create() should be compatible with …が大量に出てくる。
調べてみると、PHP 5 から変数の受け渡し方法が変わったそうで、値そのものを渡すか値の置かれているアドレスを渡すかということだそうです。その値の受け渡し方法の違いから予期せぬ結果を招かないために、PHP が確認するようにメッセージを出してくれるらしい。だからこのメッセジを表示しないようにすればいい。
その設定は php.ini ファイルの 500行目あたりにある
error_reporting = E_ALL | E_STRICTの "E_STRICT" を取ればいい。
error_reporting = E_ALLApache を再起動してエラーが発生しない事を確認することができました。
結果として、これでエラーは表示されなくなりましたが、PHP 5.3.5 と 5.3.8 に大きな変更がないことから、多分コードが古いバージョンで書かれていたのでしょうか。
因みに、PHP の公式マニュアルには「E_ALL:サポートされる全てのエラーと警告。 PHP 5.4.0 より前のバージョンでは、E_STRICT レベルのエラーは除く。」とあるので、PHP 5.3.x には E_STRICT は 'ALL' には含まれていないようです。