設定與環境來源
目的
這裡記錄跨專案、跨環境的設定來源地圖。
這不是設定值備份,也不是要鼓勵修改設定檔。目標是讓工程師在排查 DB、時區、語系、Slack/log、金流、API key、寫死常數時,先知道設定可能藏在哪些檔案、由哪個環境覆蓋、要看哪份文件。
安全規則
不要在文件中貼出以下值:
- DB password / user password
- Slack webhook
- API token / secret / private key
- CakePHP
Security.salt/Security.cipherSeed完整值 - TapPay / Stripe / AWS / OpenAI / SMS / mail secret
- production host、帳密、憑證完整資訊
可以記錄:
- 設定檔路徑
- key / constant 名稱
- 用途
- 哪個專案 / 環境會讀它
- 覆蓋順序
- 排查時應該先看哪裡
如果真的需要比對值,建議在本機臨時查,不寫進文件;必要時只記「有差異」,不要記 secret 原文。
文件架構
設定與環境來源/
README.md
專案/
pro360_api_82.md
get-lancer-php56.md
web-app_local_api_proxy.md
類型/
資料庫.md
Redis.md
時區與語系.md
Slack與Log.md
金流.md
SMS與Voice.md
外部服務.md專案入口
| 專案 | 文件 | 主要設定來源 |
|---|---|---|
| new API / PHP 8.2 | pro360_api_82 | Lib/Common/Configuration.php, Lib/Common/DBFactory.php, Docker staging 覆蓋檔 |
| legacy CakePHP / PHP 5.6 | get-lancer-php56 | app/Config/settings.yml, app/Config/core.php, app/Config/database.php |
| web-app / 前端本機 API proxy | web-app_local_api_proxy | config/local-api-proxy.js, LOCAL_API_PROXY, webpack devServer proxy |
類型入口
| 類型 | 文件 | 說明 |
|---|---|---|
| DB | 資料庫 | DBFactory、CakePHP database.php、DB 查詢環境規則 |
| Redis | Redis | RedisUtil、Cake Cache Redis、RedisSession、cache / lock / rate limit 設定來源 |
| 時區 / 語系 / 時間寫法 | 時區與語系 | local_timezone, PHP runtime timezone、DB NOW()、資料表時間欄位、default_lang, CakePHP timezone / settings language |
| Slack / Log | Slack與Log | slackName, CurrentLoggerLevel, webhook 來源、Monolog table 分流 |
| 金流 | 金流 | TapPay、Stripe、NewebPay / Pay2Go 等付款設定來源 |
| SMS / Voice | SMS與Voice | Every8d、InfoBip、Twilio、Nexmo 與簡訊 provider 切換 |
| 外部服務 | 外部服務 | AWS、AI/vector、marketing notification、mail provider 設定來源 |
路由與 endpoint 查詢是工作流程,不只是一個設定來源;完整規則請看 API 路由與遷移。
讀設定時的原則
- 先確認執行專案與環境,不要用本機檔案推論 staging / production。
- 先看是否有 Docker / deploy 覆蓋檔。
- 只記 key 名稱與來源,不記 secret 值。
- DB 查詢遵守專案 AGENTS 規則;
pro360_api_82要用容器 PHP 8.2 +DBFactory。 - 如果設定影響業務流程,業務文件只連回這裡,不複製設定細節。
- 如果規則牽涉時間窗、日期欄位或排程判斷,要先確認使用的是 PHP runtime time、DB time、local timezone 還是 Redis TTL。
常見問題
為什麼 Slack 顯示名稱和本機設定不同?
pro360_api_82 的 Slack 顯示名稱通常由 slackName 決定,但 staging / production 可能由部署時替換 Configuration.php。不要只看本機 Lib/Common/Configuration.php 就下結論。詳細規則見 Log 與告警流程 與 Slack與Log。
為什麼 DB 查詢不能直接讀本機設定?
不同專案 / 容器 / legacy CakePHP 的設定載入方式不同。pro360_api_82 查 DB / schema 應使用容器 PHP 8.2 與 DBFactory,避免本機 PHP 版本或設定路徑造成誤判。詳見 資料庫。