Keywords: PHP, PHP5, PEAR, PEAR::DB, Strict Standards
PHP技術者認定試験に向けて公式認定教本の『初めてのPHP5』で勉強中です。
試験日まであと1日しか無いんですけどー(^q^)
教本の通りデータベース接続の章までいきまして、自分の環境(Mac OS X)にPEARが入っていないことに気づいて四苦八苦*1しながらPEAD::DBを入れ、教本の通り以下のコードを実行したのですが
<?php require_once 'DB.php'; $db = DB::connect('mysqli://testdb:password@localhost/testdb'); if(DB::isError($db)) { print "Error!\n"; die("Can't connect: " . $db->getMessage()); } else { print "Connected!"; } ?>
データベースに接続出来ているのに、なにやら出てくるエラーメッセージ。
https://img.skitch.com/20110320-g8j5hy62pm31rm1mjwibrh7ngi.png:image:w700
Strict Standards?
教本通りやってるのになんじゃこれ?
で、ググってみました。
PEARの多くのモジュールはPHP4でも動作するよう作られているため、STRICTを有効にすると、大量のSTRICTが発生します。
PHP5でSTRICT有効でPEARを使う(NOTICE、STRICTをあやつる) - gounx2の日記
ははぁ。どうやら便利なエラーハンドラのようですが、PHP5+PEARでは面倒なことになる様子。
問題のないエラーなのであれば、まぁ勉強中は出ないようにしてしまいましょう。
php.iniの以下の設定を変更します。
"E_STRICT"は設定しません。
;error_reporting = E_ALL | E_STRICT error_reporting = E_ALL
Apacheを再起動して設定を反映するのを忘れないように。
https://img.skitch.com/20110320-jimjmkt74ct141a9kfp2jfqry.png:image:w700
2011-03-21 2:27 追記
さらにDeprecatedエラーもいらないかなー、ということで、最終的に設定値は以下になりました。
error_reporting = E_ALL & ~E_DEPRECATED