No.1: Wiz スケジューラー(グループウェア)と PHP ヴァージョンアップに伴うアプリの自動修正について ②
- 日時: 2022/08/17 09:56
- 名前: ナオヤM
ID:jb/jW0RU
- 参照: https://vmorita.com/bbs/wizphp/forum.shtml?room=wizphp
- PHP のバージョンが 7 になって WIZ を起動してみましたが全く動作しません。 ログインもできないので PHP の ディスプレーエラーを ONにして致命的エラーの内容を見てみると、関数 ereg(), ereg_replace()、split() ををそれぞれ preg 関連の関数に置換しなければいけないらしい。しかもこれらの ereg 関連の関数はそれらの第1引数で与える"正規表現"を preg 関数では "/正規表現/" のようにデリミターで囲んで渡さなければいけない、正規表現に使われる制御文字は \ でエスケープが必用、など結構大変です。 ほかにも、・関数に渡す引数は重複してはいけないなどの制約があり、また Fatal Error ではなく、Depreciated ですが宣言されたクラス名と同じ名前のメソッドのコンストラクターは別途 __construct__ 宣言が必用など変更箇所が続出して、とてもスクリプトを追っかけて一々修正していくのでは困難と思われました。
そこで、それらの変更箇所を検索して、決まった手順で自動的に修正する PHP ソフトを作って見ることにしました。始めは一つひとつの項目を特定のファイルに適用し、それが上手くいくとディレクトリ全体、更には再帰的にプロジェクト全体に適用という風に徐々に増やして、複数項目を一挙に処理する様にしました。 こうして開発したアプリ修正ソフトを WIZ プロジェクトに適用した結果、夫々の項目毎に処理したファイルの合計が 103 ファイル、適用箇所は数百箇所以上に及び、WIZ_V1.42_with_task は PHP7.4 で一応動作するようになりました。 自動修正では処理し切れていない箇所もあると思いますが、思っていたより処理結果が良いようなのでここで発表することにしました。 残った問題点は追々検討することとして皆さんのご意見をお聞かせ下さい。
自動修正ソフトは linux 上の WIZ がインストールされたサーバーの web root 以下に maintenance ディレクトリを作成し、その配下の index.html を、PC からブラウザでアクセスして処理するようにしています。 maintenance.tar.gz にはディレクトリと配下の index.html, phpupdate.php というアプリ自動修正ソフトと css, 画像データなどが一括して入っています。 linux サーバーなどにインストールしてお使いください。
-
|