2回目のPHP5→PHP7移行作業を行った。10年前から稼働中のシステムを PHP5→PHP7 に変更したの記事を見て、サイト経由で依頼があり。
いつもネット情報で助けてもらっているので、頻度は少ないながら自分の情報も役立つこともあろうかという気持ちでこのブログを書いている。
仕事につながることはほぼ期待していないけれど、実際あるとありがたい。何よりお役に立ててうれしい。
今回の要件
・PHP5 --> PHP7.1以上
・smarty2 : smarty3には上げず、そのまま。PHP7化する。
・MDB2:そのまま動けばOK、必要であればPDO等に変更する。
チェックツール:php7ccを利用
php7ccは、PHP 5からPHP 7系へ移行する際に互換性のない箇所をリストアップしてくれるコマンドラインツール。
サポートが終了しているため、今後は他のツールがいいかも・・だが、結果としては特に問題なく使えた。
【チェックされた項目】
・ereg、ereg_replace --> preg系へ変更した
・loop内でのbreak不正使用 --> ロジック修正した
・mktimeのパラメタ構成不正 --> 変更に対応した
・mysql関連 --> PEARライブラリを入れ替えた(後述)
・constructorの記述不正 --> __constructor() へ変更した
・& 参照不正 --> 削除した
warningレベル(非推奨コマンド等)は検出されなかったため、別途対応は必要だった。
Smarty2
前回と同じく、PHP7対応しているバージョンに変更する。
最終更新は前回分と同じだった。
changelog
===== 2.6.31 ===
2017-11-03
* replace functions deprecated in PHP 7.2
PEAR::MDB2;mysqlドライバ変更
PEAR::MDB2のPHP7化はできないかも、PDOかも・・と思っていたが、親切な人がすでにされていた。ありがたい。
https://github.com/pear/MDB2
「MDB2.php PHP7 fixes 13 months ago」だそうです。
mysqlのドライバを
mysql.php --> mysqli.php
に変更した。
PEAR::MAIL-->send_mail()
PEAR::MAILのPHP7化が不明&smtpにこだわらない・・・ので、他システムでの実績のあるphp の send_mail()へ書き換えた。
そして、まだまだ使える PEAR
まだまだ、使えます。枯れていていい感じ(?)