Posts Tagged ‘PHP’

Snow LeopardとPHP5.3

9月 8th, 2009

こんにちは。ユナイテッドピープルの須子善彦(scommunity)です。
またもや技術TIPSの投稿になります。
やはり、メモ代わりに書く投稿が一番多くなりますね。
徐々に、他の話題についてもがんばって書いていきますね。

さて、今、新しく始まるプロジェクトのWebアプリケーションを実装しています。

その実装を行う上で、コーディングを行っているローカルのMacに1つめのデバック環境を構築していますが、そのMacに新OSである “Snow Leopard” (MacOS 10.6) をインストールしてみました。

そしたら、PHPが5.2.4から5.3.0になりました。

PHP5.3.0以降には、E_DEPRECATEDという新たなerror_reportingレベルができたため、古い構文や関数を使っているPHPを実行するとエラーメッセージが数多く表示されます。CakePHPも1.2系では、エラーメッセージが多数でます。本当は、これらの表示を有効にしたままがよいですが、自分の書いているコードではなく、フレームワークの部分であまりにも大量のエラーメッセージがでるのは、開発効率に影響がでます。従って、以下のようにすることで、E_DEPRECATEDを表示しないようにします。

php.iniや.htaccessなどで、error_reportingの値を、たとえば以下のようにする。

“E_ALL & ~E_NOTICE & ~E_DEPRECATED”

さらに、CakePHPにも手を加えなくてはなりません。
cake/libs/configure.phpの290行目あたりに以下の3行を追加。

if (isset($config['debug'])) {
if ($_this->debug) {
error_reporting(E_ALL);
   //この下のif文を追加する
if (error_reporting() > 6143) {
error_reporting(E_ALL & ~E_DEPRECATED);
}

参考にしたのは以下のサイトです。ありがとうございます!

  1. PHP5.3だと CakePHPで Deprecatedエラーが出まくる問題の対処方法 | floatingdays
  2. PHP 5.3だとCakePHPで大量のエラー | IT『苦労と試行』日記

なお、まだTimezone周りのエラーメッセージが残ります。
これに関しては、php.iniの[Date] セクションで、date.timezoneの値を設定してあげます。

date.timezone = Asia/Tokyo

この点に関して参考にしたのは以下のサイトです。ありがとうございます!

  1. Vine5/PHP5.3のtimezoneエラー – 覚え書き Plus!