セッション修正履歴(ローカル動作・PHP8互換対応) 概要 - 目的: ローカル(XAMPP)での動作とPHP 7.4/8.x互換性の確保、DB接続先の切替、パス解決の修正。 - 期間: 本セッション中の変更点をまとめています。 主な変更 1) DB接続・パス関連 - config/config.php - DB設定をローカル用へ変更: host=localhost, db=bgata, user=root, password='', charset=utf8mb4。 - `ILJ_SV_ROOT` を実行環境から自動解決(realpath)に変更し、Windows/Linux両対応に。 - include/model.php(いったん堅牢化→ユーザー要望で復元) - 一時的に例外やNULLガード等を追加しましたが、従来実装へ戻しました(prepare() on null は接続不良が原因のため、環境側で要確認)。 2) TCPDFのPHP8互換化(致命的エラー/警告の解消) - lib/tcpdf/tcpdf.php - 文字列オフセットの波括弧アクセス `{}` を `[]` に修正(例: `['value']{1}` → `['value'][1]`)。 - switch内の `continue;` を `continue 2;` に修正(PHP7.3+の警告回避)。 - lib/tcpdf/include/tcpdf_images.php - `$t{$i}` → `$t[$i]` に修正。 3) コントローラのロードシグネチャ統一(親と互換に) - controller/login/base_controller.php / base_controller720.php / base_controller02.php - `load($value)` → `load($arr = array())`、`parent::load($arr)` 呼び出しに修正。 - controller/training/base_controller.php / controller/training/training/base_controller.php - `load($value)` → `load($arr = array())` に変更。 - 既存処理で必要な `$value` は POST/引数配列から補完するように調整。 4) Model::getData()/existData() のシグネチャ互換対応(子での別名化) - 互換性問題: 親 Model の `getData()` は引数なし/`existData()` は `(array, array, array)`。子で同名・別シグネチャを定義している箇所を別名化し、呼び出し側を追従。 - model/mst_admin.php - `getData($groupID)` → `getDataByGroup($groupID)` に改名。 - 参照更新: controller/admin/index_controller.php - model/v_user.php - `getData($adminUUID, $flag=0)` → `getDataByAdmin($adminUUID, $flag=0)` に改名。 - 参照更新: controller/user/index_controller.php - model/mst_user_admin.php - `existData($userID)` → `existDataByUser($userID)` に改名。 - `getData($userID)` → `getAdminUUIDsByUser($userID)` に改名。 - 参照更新: include/controller.php(existData→existDataByUser)、controller/user/edit_controller.php(getData→getAdminUUIDsByUser)。 - model/v_chat.php - `getData($userUUID, $date='')` → `getDataByUser($userUUID, $date='')` に改名。 - 参照更新: controller/chat/base_controller.php - model/tbl_contact.php - `getData($userID, $st, $ed)` → `getDataByUserAndPeriod($userID, $st, $ed)` に改名。 - 参照更新: controller/log/index_controller.php - model/tbl_send.php - `getData($userID, $st, $ed)` → `getDataByUserAndPeriod($userID, $st, $ed)` に改名。 - 参照更新: controller/log/index_controller.php - model/tbl_report.php - `getData($userID, $st, $ed)` → `getDataByUserAndPeriod($userID, $st, $ed)` に改名。 - 参照更新: controller/report/index_controller.php - model/mst_link.php - `getData($groupID)` → `getDataByGroup($groupID)` に改名。 - 参照更新: controller/link/index_controller.php - model/mst_user.php - `getData($adminID, $flag)` → `getDataByAdminAndFlag($adminID, $flag)` に改名。 - 参照箇所は本時点では見当たらず(今後使用時にこの新名を使用)。 5) 未使用のQR/画像デコード関連の削除(外部CGI依存の排除) - controller/login/ - `base_controller.php`, `base_controller02.php`, `base_controller720.php`, `decoder_controller.php` を削除。 - プロジェクト直下のユーティリティ類(未使用) - `decoder.php`, `decoder01.php`, `decoder_720.php`, `decoder_960.php` - `encoder.php`, `encoder01.php`, `encoder_test.php`, `encoder_pwd.php`, `encoder_ls.php` - ルートの `login_decoder.php`, `login_encoder.php` も削除。 - initialize.php は `base_controller.php` が存在する場合のみ読み込むため、削除による他機能への影響はありません。既存の `login.php` は `controller/login/index_controller.php` を使用し、従来通り動作します。 補足メモ - 以前の `prepare() on null` はDB接続失敗が原因です。XAMPPのMySQL起動、DB `bgata` の存在、`pdo_mysql` 有効化、`config/config.php` の値をご確認ください。 - 今回の修正は既存の動作・SQL生成に影響しない範囲で命名変更と参照差し替えのみを実施しています。 以上