大元は2006年に作ったシステム、改修して2009年から稼働していたシステム。
10年前当時PHP4。
現在PHP5のサーバで稼働中であるが、とうとうPHP7に移行せざるをえない状況になった。
PHP本体。だけでなく
PHP5→PHP7の主な変更点はだいたい分かっている。
・コンストラクタの記述方法を変更する(クラス名 → __construct() )
・インスタンス生成(new)時の & 削除する
・正規表現関数を変更する(ereg → preg_match など)
・変数:型が変わる場合、別変数にする。(数値を代入した後、配列は入れられなくなる)
・クラス継承した場合でメソッドオーバーロードする時は、引数の数を同数にする。(親側にデフォルト値を設定していても省略できない)
該当箇所をつぶせばいけるだろう。
と思っていたのは見積もりが甘かった。
10年前のライブラリ類をなんとかしないとダメだった。もちろん都度バージョンアップはしているが、PHP5のまま。
・Smarty2
・PEAR::DB ←MDB2でもPDOでもなく...
・PEAR::DB_DataObject
・PEAR::HTML_QuickForm
・PEAR::Auth
Smarty2
Smarty3ではなく2系なので、期待していなかったのが、ググるとPHP7対応しているとの情報があった。
===== 2.6.31 ===
2017-11-03
* replace functions deprecated in PHP 7.2
ありがたく入れ替えた。
PEAR::DB,PEAR::DB_DataObject
調べると、PEAR::DBで利用する mysql.php 内で、古いmysql関数を使っているところがエラーになっている。
PHP7では「mysqliクラスまたはPDOクラスの関数等で書き換える必要がある」そうだ。
・・・結論から言うと、「mysqli.php」を利用すればOKだった。
connect時、DSNでの指定を「mysql」→「mysqli」に変更。
※これに気づかず、途中までちまちまとmysql.phpソースを追いかけながら修正していた労力・・・
ただ、DataObject.phpの方は手を入れる必要があった。
PEAR::HTML_QuickForm
これも結論から言うと、↓これを利用させてもらった。
https://github.com/flack/quickform
Forward compatible fork of HTML_QuickForm
This package is intended mainly as a drop-in replacement for existing installations of HTML_Quickform. See http://pear.php.net/manual/en/package.html.html-quickform.php for documentation.
PHP7化が完全になされているわけではなく修正は必要だが、コンストラクタが__construct() に書き換わっていた点がよかった。
※これも、初めは自力でパッケージ純正のソースを修正していたのだが、コンストラクタ書き換えによって、インスタンス生成部分の変更も必要になり、うまく動かない部分が出てきていた。
PEAR::Auth
MySql周りを修正した・・・はず・・・(後で追記する予定)
まだまだ使える PEAR
正直、PEAR(やSmarty2)は、PHP7では使えない可能性があると思っていた。
が、公式・非公式で誰かが対応してくれている=まだ使っている人がいる。
まだ、使える。すごい。ありがたい。