読者です 読者をやめる 読者になる 読者になる

TMD45'β'LOG!!!

Life is Beta-ful.

PHP5でPEAR::DBを教本通り使ったらStrict Standardsエラーが発生した件

PHP PEAR

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

*1:Xcode入れてMacPorts入れてApache2+PHP5入れなおしてPEAR入れて…という感じ。

▲ ページトップへ移動