設定與環境來源

目的

這裡記錄跨專案、跨環境的設定來源地圖。

這不是設定值備份,也不是要鼓勵修改設定檔。目標是讓工程師在排查 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.2pro360_api_82Lib/Common/Configuration.php, Lib/Common/DBFactory.php, Docker staging 覆蓋檔
legacy CakePHP / PHP 5.6get-lancer-php56app/Config/settings.yml, app/Config/core.php, app/Config/database.php
web-app / 前端本機 API proxyweb-app_local_api_proxyconfig/local-api-proxy.js, LOCAL_API_PROXY, webpack devServer proxy

類型入口

類型文件說明
DB資料庫DBFactory、CakePHP database.php、DB 查詢環境規則
RedisRedisRedisUtil、Cake Cache Redis、RedisSession、cache / lock / rate limit 設定來源
時區 / 語系 / 時間寫法時區與語系local_timezone, PHP runtime timezone、DB NOW()、資料表時間欄位、default_lang, CakePHP timezone / settings language
Slack / LogSlack與LogslackName, CurrentLoggerLevel, webhook 來源、Monolog table 分流
金流金流TapPay、Stripe、NewebPay / Pay2Go 等付款設定來源
SMS / VoiceSMS與VoiceEvery8d、InfoBip、Twilio、Nexmo 與簡訊 provider 切換
外部服務外部服務AWS、AI/vector、marketing notification、mail provider 設定來源

路由與 endpoint 查詢是工作流程,不只是一個設定來源;完整規則請看 API 路由與遷移

讀設定時的原則

  1. 先確認執行專案與環境,不要用本機檔案推論 staging / production。
  2. 先看是否有 Docker / deploy 覆蓋檔。
  3. 只記 key 名稱與來源,不記 secret 值。
  4. DB 查詢遵守專案 AGENTS 規則;pro360_api_82 要用容器 PHP 8.2 + DBFactory
  5. 如果設定影響業務流程,業務文件只連回這裡,不複製設定細節。
  6. 如果規則牽涉時間窗、日期欄位或排程判斷,要先確認使用的是 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 版本或設定路徑造成誤判。詳見 資料庫