トミリュウ・コムホームTestお問い合わせご協力ありがとうございました。↓PHPバージョン7.0がリリースされたのが2015年12月。1年と数か月が経過しようとしている昨今においては、ニーズがないと思いますが、PHP4からPHP5へ移行する際の留意点について簡単にメモを残しておきたいと思います。PHP4.4.4で構築されたWEBシステムをPHP5.3.3へ実際に移行した時の留意事項です。PHP5.6のサポート切れが2017年8月28日に予定されているご時世の中、”何故5.3.3?”という疑問は当然ですが、大人の事情でそうなりました(笑)。いくつかパターン別に要対応箇所と対応案を列挙します。1.非推奨となった関数への対応PHP5.3.0で非推奨となり、PHP7.0.0で削除される関数に以下のようなものがあります。可能ならば全ての関数を代替え可能な関数や自作するなどして非推奨となる関数は使わないように対応します。標準では非推奨の警告メッセージが表示されるだけで関数は動作するのでそのまま使い続ける案です。この対処は関数が削除されるPHP7.0.0からは使えなくなります。ログファイルに以下の非推奨関数である旨の警告メッセージ出力されます。xxxxx.」これが好ましくない場合は、PHP設定で非推奨メッセージは表示しないように調整することも可能です。Onとしてもよいかと。実行すると関数a()が再定義されているとなってエラーとなります。インクルードすることで対処できる場合もあると思います。こっちの方が機械的に対処可能です。するか、旧い関数名で独自に定義するしかないですね。既存のレガシーシステムのPHP4に、以下のようなソースコードがあって、これまで動作していました。こんなやり方が流行った時期があるのでしょうか。使ってオブジェクトが初期化されているかをチェックしているという作りがどうかと思います。if文の中の<処理ブロックX>は処理されません。PHPバージョンの違いによって全く違ったロジックで動くので注意が必要です。PHP5からは、以下のワーニングが出ます。xxx【対処方法】strlen()の場合、引数を文字列型(string)にキャストしてやるとエラーとはなりません。}5.register_globalsはもう使えません...たぶん、そんな実装をやる人は今はもう居ないと思いますがレガシーなスクラッチ開発をしたWEBシステムには使われている場合があるんです。PHPフレームワークを使うのが当たり前という世界の人には、全く無縁の機能です。ようにアクセスできるのです。この機能はPHP5.4から削除されました。【対処方法】ソース書き換えしかないですね。変える必要があります。ことそれをいい機会とみて、フレームワークに乗り換えてもいいでしょう。6.インスタンス変数の重複定義が厳しくなるPHP4のコンパイラがゆるかっただけなのですが、以下のようにクラス内でプロパティ変数を重複してもコンパイルエラーにならなかったのですが、PHP5からはエラーとなります。“override”;}次のようなエラーになります。しないようにソース書き換えです。7.array_merge()関数の挙動の違い引数のうち1つでも空(NULL)だった場合の挙動が変わります。PHP4では引数の内1つでもNULLがあった場合でも、他の引数に配列が指定されていればそれらを連結して返します。1つでもNULLが渡ることを前提としている箇所は、この関数を呼び出す側でNULLが入らないように変更して動作を合わせる必要があります。加えて、HTTP_POST_VARS、HTTP_GET_VARSといったサーバー変数が非推奨となりました。【対処方法】$_COOKIE,$_REQUEST,$_POST,$_GETを使うように変更。実際の案件では上記のような要対応箇所が、数千ファイルからなるソースコードの中にどれくらい出現するかを検出するPHPのプログラムを作成して、工数の概算を算出するといったことも行いました。コメントをキャンセルメールアドレスが公開されることはありません。