pro360_api_82 設定來源
目的
記錄 /Users/mattsu/Documents/Site/pro360_api_82 的主要設定來源與查詢順序。
這份文件只記來源與 key 名稱,不記 secret 值。
主要檔案
| 路徑 | 用途 |
|---|---|
Lib/Common/Configuration.php | new API 主要常數設定,包含 DB、Slack/log、語系、時區、第三方服務 key |
docker/staging/Configuration.php | staging build 可能覆蓋到容器內 Lib/Common/Configuration.php |
Lib/Common/DBFactory.php | DB 連線入口,讀取 Configuration.php 的 DB constants |
Lib/Common/DBConfiguration.php | DB query / modify 實作與 DB error log |
Lib/Common/DBConfigurationArray.php | DB connection wrapper |
Lib/Util/RedisUtil.php | Redis cache / lock / rate limit helper,讀取 use_redis 與 ProConfig::get('redis') |
Lib/Common/LogHelper.php | Monolog / Slack / PDO handler 組合入口 |
Lib/Common/MySlackHandler.php | Slack payload 與 webhook 選擇 |
Lib/Common/PDOHandler.php | Monolog 寫 DB table 的 handler |
Lib/Common/View.php | view / translation helper,含 timezone display 與 language id 使用 |
Lib/Common/Controller.php | language path handling,例如 URL 語系 segment |
Lib/Common/RouterV3.php | 目前主要 router,會移除語系 path segment,並依序套用 Mapping / Origin / File routing rule |
Lib/Common/RouterRule/Mapping.php | 舊 path / 特殊 path 到 endpoint action 的明確對照表 |
Lib/Common/RouterRule/Origin.php | /v1/<endpoint>/<action> 類 origin rule |
Lib/Common/RouterRule/File.php | 依 endpoint file fallback 的 route rule |
composer.json | autoload files 會載入 Configuration.php 與 FatalErrorHandler.php |
設定載入順序重點
Composer autoload 會載入:
Lib/Common/Configuration.php
Lib/Common/FatalErrorHandler.phpDocker staging build 可能把:
docker/staging/Configuration.php複製或覆蓋成容器內的:
/project-data/Lib/Common/Configuration.php因此不要只用本機 Lib/Common/Configuration.php 判斷 staging / production 的實際設定。
常見設定分類
DB
常見 key 名稱:
DB_Server
DB_Server_Name
DB_DBName
DB_Port
DB_User_Name
DB_Password實際 DB 連線入口:
Lib/Common/DBFactory.php查 DB / schema 時依 repo 規則使用容器 PHP 8.2 + DBFactory,不要直接用本機 PHP 或手動 require Configuration.php。
Slack / Log
常見 key 名稱:
CurrentLoggerLevel
slackName
slackWebhook
slackWebhook2
LOG_FILE_PATH詳細判讀見:
Redis
主要來源:
Lib/Common/Configuration.php
docker/staging/Configuration.php
Lib/Util/RedisUtil.php常見 key:
use_redis
ProConfig::get('redis')['hostname']
ProConfig::get('redis')['port']詳細規則見 Redis。
時區 / 語系
常見 key 名稱:
date_default_timezone_set("UTC")
local_timezone
default_lang
use_multi_langs
use_multi_translation
seo_page_force_lang相關程式:
Lib/Common/View.php
Lib/Common/Controller.php
Lib/Common/RouterV3.php時間寫法與資料表時間欄位規則見 時區、語系與時間寫法設定來源。migration 時要分清楚 PHP runtime UTC、local_timezone 台北時間、DB NOW() / CURRENT_TIMESTAMP、以及 queue/log 時間。
area / sys_area
ProConfig::get('area') 會影響路由以外的頁面 partial、語系、電話、費用、第三方服務等行為。排查頁面或 API 差異時,要先確認實際環境載入的 Configuration.php 內 area 值。
注意:
- 台灣環境不要設定
area = tw或sys_area = tw;台灣要保持空值,讓程式走 generic Taiwan/default path。 area只有跨區環境才應設定區域代碼,例如hk/sg。- 若需要調整區域設定,應改正確環境來源檔,例如本機
Lib/Common/Configuration.php或 Docker staging 覆蓋檔,並確認部署流程實際載入哪一份。 sys_area不應被拿來補救area設錯造成的行為差異;程式若讀的是ProConfig::get('area'),就必須修正area的來源或該功能的 fallback 邏輯。
案例:
/genre/home 會由 Endpoint/V1/Genre.php 將 ProConfig::get('area') 塞成 view 變數 sys_area,View/Genre/index.phtml 再呼叫 Nearme/footer{$sys_area}。若 area = tw,會找 View/Nearme/footertw.phtml;目前 generic TW footer 是 View/Nearme/footer.phtml,不是 footertw.phtml。因此台灣環境的 area 應保持空值,不要設定成 tw。
路由 / path
主要來源:
Lib/Common/RouterV3.php
Lib/Common/RouterRule/Mapping.php
Lib/Common/RouterRule/Origin.php
Lib/Common/RouterRule/File.phpMigration 或查 API path 時,先看 Mapping.php 是否有 legacy path 的明確 mapping;沒有 mapping 時,再看 Origin / File fallback 是否能把 path 轉到 endpoint/action。
詳細規則見 API 路由與遷移。
金流 / SMS / 外部服務
Configuration.php 也集中許多第三方服務 key。文件只記 key 名稱與用途,不記值。
設定類型已拆分到:
排查順序
- 先確認執行環境:本機、container、staging、production。
- 看該環境實際使用的
Configuration.php。 - 若是 DB,走
DBFactory,不要手動 require 設定。 - 若是 Slack/log,先看
slackName、CurrentLoggerLevel與 handler 設定。 - 若是語系 / timezone / 時間欄位,先看常數,再看
Controller/View/RouterV3是否有二次處理;資料表時間要回到寫入流程確認是 PHP time 還是 DB time。 - 若是 API path,先查
RouterRule/Mapping.php,再查 endpoint class 與 action method。