PHP で Strict Standards のエラー

2012年6月1日金曜日

  ローカルで Xampp を動かして、テスト用に使っています。
  先日、Xampp 1.7.4 を 1.7.7 へバージョンアップしました。含まれるサーバーのバージョンは

XAMPP1.7.4(Apache 2.2.17、PHP  5.3.5、MySQL 5.5.8)
XAMPP1.7.7(Apache 2.2.21、PHP  5.3.8、MySQL 5.5.16)
です。この結果、PHP のエラー
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_ALL
Apache を再起動してエラーが発生しない事を確認することができました。

  結果として、これでエラーは表示されなくなりましたが、PHP 5.3.5 と 5.3.8 に大きな変更がないことから、多分コードが古いバージョンで書かれていたのでしょうか。
  因みに、PHP の公式マニュアルには「E_ALL:サポートされる全てのエラーと警告。 PHP 5.4.0 より前のバージョンでは、E_STRICT レベルのエラーは除く。」とあるので、PHP 5.3.x には E_STRICT は 'ALL' には含まれていないようです。