\"Wiz
掲示板トップページ

La!Cooda WIZ スケジーラとPHPバージョンアップ自動修正プログラム

★ La!Cooda WIZ スケジーラとは

【最新バージョンは v1.42 です。ダウンロードはこちら
  1. wiz142plus_utf8 は (株)システムコンサルタンツのフリーウェア WIZ 1.4.0 を元に同社がクロスサイト・スクリプティング対応のキュリティ・アップデートした WIZ 1.4.2 版と同社のタスク機能を追加する TASK 1.0.1 を統合し、これらのスクリプトを PHP7 に対応するようにスガラボットが修正して文字コードも UTF-8 に変更した、WIZ の最新サーバ環境対応版である。
  2. スケジュール帳については、機能的にも活動に[社内]、[社外]表示や祝日設定もハッピーマンデーや2099年までの春分・秋分の日ま自動計算など、細かいところが拡張されている。
  3. 変更内容は CHANGELOG に詳しいが、OS として Windows と Linux、データベースとして PostgreSQL と MySQL が独立して選択できるようにしてあるため、レンタルサーバなどについても最新のサーバ環境で使用できるようになった。(取り敢えずは筆者の環境であるLinux, PostgreSQL で検証しているため、他の環境はこれに準じて手直しが必用。)
  4. ライセンスについてはオリジナルの(株)システム・コンサルタンツの規定に準じる。スガラボットによる修正箇所はの著作権は放棄しないが、再配布についてはスガラボット修正の記述を明記することにより可能とする。

★ PHP5.4 → PHP-7.4にアップデートするために必用なアプリ修正項目

  1. 廃止になった関数の置換修正が必要。具体的には、ereg 関連関数の廃止に伴い、ereg() -> preg_match() に、ereg_replace() -> preg_replace() に、split() -> preg_split() に置換した。 この時難しかったのが ereg では第一引数の置換対象となる正規表現がそのままのカタチで良かったのが、preg 関数の場合は、それをデリミタ"/"で囲んだ"/正規表現/"としなければならない点であった。
  2. 関数の引数として同じ名前の変数が重複していると Fatal Error となるので、重複しているときは後者を削除して重複しないようにした。
  3. クラス名と同名の関数によるコンストラクター定義が非推奨となったので、この時は別途 __construct() 関数を以下のように追加して、
    class __construct($arguments) {
    $this=>クラス名と同名関数($arguments);
    }
    PHP7 の仕様を満たすようにした。
  4. 上記三項目を自動的に処理する PHP プログラムを開発して "LaCooda! wiz" の全ファイルを対象に処理したところ、合計 111 個ものファイルがヒットして自動修正を行った。後から手動修正が必要になったのは wiz/gw.php と wiz/bbs/admin/index.php の二つだけで、それも PHP5.4 対応で htmlspecialchars()の処理への対応のチョットした変更だけであった。この自動修正プログラム phpupdate.php と修正対象(ディレクトリ・ファイル)と処理項目を選択するindex.html を同梱したので、他の PHP プロジクトで PHP のアップデートが必用な場合に試してみてください。これらの2ファイルを maintenance等の別ディレクトリーを作成してアップし、起動してみて下さい。この自動処理プログラムは対象を一ファイルからプロジェクト全体を指定して再帰的に処理する事が可能です。また、修正項目も上記5項目を個別に或いは複数または全て選択することが可能です。未だ僕も試していませんが PHP8 に対処する場合もかなり有効なのではないかと思われる。 先程述べたように wiz プロジェクト全体を処理するとヒットしたファイルは 111 でしたが、処理時間は数秒で処理結果の表示には延々スクロールが必用でしたが、同様の内容がログ出力されているので後からゆっくりと確認する事ができる。
  5. 前のメンテナンスから10年も経って、筆者も歳を取りプログラミングもすっかり忘れて手間取ったが、令和になって天皇誕生日も替わり、山の日など祝日の変更があったため wiz/holiday.php を修正した。
  6. PHP がバージョン 7,4 または 8.0 8.1 にアップして、Apache 2.4 等になると PHP はバージョン 5.4 の時のようにアパッチの MPM preforkで動作するのではなく、MPM event で PHP も php-fpm 等の cgi として動作するのが一般的になり、このため .htaccess に PHP 関連のディレクティブを記述すると 505 Internal Server Error となって全く動作しなくなった。このためディレクトリ毎の PHP 設定は ,htaccess ではなく .user.ini というファイルに php.ini の記述と同じ形式で記述するようになった。筆者もこのことに気付かず何日か悩んでいたものである。
  7. PHP7 になって mysql モジュールが廃止され、mysqli に変わったようである。筆者は PostgreSQL を使用しているため、この点についての変更は全く考慮していない。MySQL をご使用の場合は別途対応が必要となります。