PHPを5.6モジュール版に変更したら、PHPのエラーがたくさん出た

ロリポップ!がモジュール版PHPを提供したので、変更したらサイトが表示されなくなった。
という記事を前回書きました。(その記事は→こちら

今回は、それ以外にも、いくつかPHPのエラーが出たので、その報告をしておきます。
未来の自分への手紙でもあります。
何度も同じことで、つまずくものですから・・・

わかった

 

変数は宣言してから使うこと

JAVAとかC#とかでは当たり前のことなのですが、VBとかPHPは、宣言なしで変数が使える。
昔は、そうでした。
最近の、VB.net とかはそうではなくなってきていますけど。

今回、エラーが出たのは、以下のような記述でです。

$db というのが、データベースアクセスオブジェクトです。
そのオブジェクトのインスタンスがなければ作成しましょう!ってことなんですけどね。
以前は、これで使えていたのです。

今回、5.6モジュール版に変えたところ、「Use of undefined constant $db」なんてのが出てきちゃいました。
定義されていないものをいきなり使うのじゃね~~~わ。
という意味ですね。

ですので、別のところで、しっかり「$db」は初期化することにしました。
同じプログラムファイル上なら、必ず初期化するのですけどね。
別のファイルをinclude しており、$dbを複数回初期化しないようにこう書いていたのです。
という言い訳はどうでも良いので、とにかく、宣言はしてから変数は使いましょう。

date関数のformat文字列は「”」で囲む

Use of undefined constant Y – assumed ‘Y’

というエラーが出ました。

上記は、修正した後のソースです。
Copyrightのところに、その年を入れたくて、日付関数を使っていたのです。

そこで、date(Y) と記述していたのです。
PHP5.3では動いていたのですけどね。

ただ、文法的にはちゃんとダブルコーテーションで囲まないとダメらしいです。
ということで、上記のように修正したところ、エラーは出なくなりました。

$_SERVER は、セットされているものだけ取得する

参照元となるIPアドレスやURL、ユーザエージェントやホスト名。
そういうデータを取得したかった為、$_SERVER を使って、取得していました。
PHP5.3の時は、セットされているかどうか、確認する必要もなく普通に使えてたんです。

ですが、PHP5.6モジュール版に変えたところ、「Undefined index: REMOTE_HOST」というものが出るようになりました。
ちゃんと、セットされているかどうかチェックしなさい!ってことですね。

以下のように、修正しました。

これで、エラーも出なくなりました。

はまっている人は、これで良くなると良いですね。

 



日記・雑談 ブログランキングへ

コメントを残す

CAPTCHA


サブコンテンツ

このページの先頭へ