ページいっぱいに次のようなエラーメッセージのオンパレード!
Strict Standards: Non-static method DB::parseDSN() should not be called statically, assuming $this from incompatible context in xxxxxx.php on line 520
調べてみるとレンタルサーバー会社が知らないうちにPHPをバージョンアップした結果、今までは出ていなかったStrict Standards Errorが表示されるようになってしまったらしい。
この時はPHPのバージョンを下げることによってエラーを消すことができたけど、今度はXAMPPを使ってローカルでJoomlaをいじくっていたところ、インストールしたモジュールが古かったらしくまた例のエラーが出た。前のようにPHPのバージョンを下げるわけにもいかず方法を探していたら、よく似た事例を発見。
以前のコードが最新phpでは推奨されないとして警告・エラーになる場合があります。とはいっても私のケースはphpのバージョンも違うのでうまくいくかどうかははなはだクエスチョンマークだったけど、とにかくエラーだと表示された行を見てみた。
今回の例では、
chapter4_6/index.php : 30行目
$cms =& new CMS($CONFIG['dsn']);
↓
$cms = new CMS($CONFIG['dsn']);
構造はよく似ている。それで、書いてあったように 「&」を消してみると。。。。
うまくいった(まぐれか??)。
最後にこの構文のとはまったく違うエラーメッセージだけが残ったがこれについては「display_errors=off 方法」で検索をかけると解決策が見つかった。
そこで出てきた「誰かのホームページ」にいわく
1. php.iniで指定する場合。
※ Webサーバ(Apache)の再起動が必要です。
;エラーを出力しない場合
display_errors = Off
;エラーを出力する場合
display_errors = On2. PHPソースで指定する場合。
// エラー出力しない場合
ini_set( 'display_errors', 0 );
// エラー出力する場合
ini_set( 'display_errors', 1 );
ようは、display_errorsをOffにすればいいということらしい。
XAMPPの場合は直下にあるphpファイルの中にあるphp.iniを書き換えることができたのでこのような発見ができた。レンタルサーバーでアップしているHPのほうも試すことができればやりたいがこれについてはphp.iniをいじる方法を探して見なくてはならないようだ。