Relayer
Docs運用env-vars

環境変数と .env カスケード#

.env 系ファイルは symfony/dotenv の標準カスケードで読み込まれます。

読み込み順(優先度)#

  1. .env — コミットする既定値
  2. .env.local — ローカル上書き(gitignore)
  3. .env.{APP_ENV} — 環境別の既定値(コミット)
  4. .env.{APP_ENV}.local — 環境別のローカル上書き(gitignore)
  • 存在しないファイルは黙ってスキップ。
  • すでに $_ENV / $_SERVER / getenv() にある値(実環境の変数)は、.local を含むこれらすべてのファイルより優先されます。ファイルの間では .local がコミット版を上書きします。

秘密情報は .env に書かない。 .env は通常コミット対象です。認証トークン等は gitignore 済みの .env.local に置いてください。

.env の例:

DATABASE_DSN=mysql:host=127.0.0.1;dbname=app;charset=utf8mb4
DATABASE_USER=app
DATABASE_PASSWORD=secret

コミットする .env には APP_ENV を書きません。APP_ENV が無ければ本番扱いなので、指定し忘れたデプロイでも開発モードにはなりません。開発モードはマシンごとに gitignore 対象の .env.local で有効にします。relayer init が .env.local を書くのは新規プロジェクトだけなので、clone した直後は次を実行してください。

echo APP_ENV=dev >> .env.local

利用できる環境変数#

変数用途
APP_ENVdev/development で PSX オンザフライコンパイル+プロファイラ有効。それ以外の値と未設定は本番扱い。開発では gitignore 対象の .env.local に APP_ENV=dev を書く
DATABASE_DSNPDO 接続文字列。未設定なら Db レイヤーは登録されない
DATABASE_USERDB ユーザー名
DATABASE_PASSWORDDB パスワード
DATABASE_TIMEOUT接続タイムアウト秒(PDO::ATTR_TIMEOUT)
DATABASE_READ_TIMEOUTMySQL 読み取りタイムアウト秒(任意)
PROFILER_EXCLUDED_PATHSプロファイラ除外パス(カンマ区切り・前方一致)
HTTP_CLIENT_TIMEOUTHTTP クライアントのリクエスト全体タイムアウト秒(任意)
HTTP_CLIENT_CONNECT_TIMEOUTHTTP クライアントの接続確立タイムアウト秒(任意)
LOG_LEVELロガーのしきい値。PSR-3 の 8 レベルのいずれか(既定 dev=debug/本番=info。綴り誤りは既定にソフトフェイル)
LOG_FILEロガーの出力先パス(未設定なら STDERR)
APP_LOCALE多言語化のデフォルト/アクティブロケール(既定 en)
APP_LOCALESサポートロケール(カンマ区切り。既定は APP_LOCALE のみ。2 つ以上でロケール切り替えが作用)
LOCALE_COOKIEロケールを載せる Cookie 名(既定 locale。CDN セーフ・セッション不要)
LOCALE_PATH_PREFIX/{locale}/... ルーティングの opt-out(既定 true)
NATIVE_ROUTE_TIMEOUTネイティブルートのタイムアウト秒(既定 30)
GO_BINrelayer native:build が使う go のパス
ORIGIN_SECRET / ORIGIN_SECRET_PREVIOUSOriginGuard を有効にする秘密値と、ローテーション中の旧値
ORIGIN_GUARD_HEADER / ORIGIN_GUARD_EXCEPT / ORIGIN_GUARD_MODEOriginGuard のヘッダー名(既定 X-Origin-Secret)、除外パス、enforce / report
TRUSTED_PROXIES / TRUSTED_PROXY_PRESET / CLOUDFLARE_IP_RANGESTrustedProxy を有効にする CIDR、fly / cloudflare / xff、Cloudflare レイヤーの IP レンジ
TYPESAFE_API_KEY / TYPESAFE_MODELsatisfies() の Judge を有効にする API キーとモデル(既定 jev-latest)

DATABASE_* は任意で、DATABASE_DSN が設定されたときだけ Db レイヤーが DI コンテナに登録されます(データベース 参照)。

APP_LOCALE / APP_LOCALES / LOCALE_COOKIE / LOCALE_PATH_PREFIX も任意で、何も設定しなければ単一ロケール(英語)のままコスト無しで動きます(多言語化 参照)。

このサイト固有の変数#

上はフレームワーク(relayer)の変数です。このドキュメントサイト(relayer-doc)自体は、これに加えて記事ストアの TURSO_DATABASE_URL / TURSO_AUTH_TOKEN(未設定なら var/docs.db)と、次を読みます。いずれも Fly secret として設定します。

変数用途
GA_MEASUREMENT_IDGA4 測定 ID(G-XXXXXXXXXX 形式のみ受理)。設定時だけ本番の <head> に gtag.js を出力。未設定なら一切出力しない=dev/ローカルは無計測

詳細はデプロイを参照。

最終更新 — 2026-11-04
改訂履歴 (7)
  • v1.1.0: usePHP→Rosanna(rosanna-defer)に合わせて更新
  • v0.31.0: 優先順位の修正と新しい環境変数を追記
  • サイドバー再構成: 開発カテゴリ追加に伴う order 調整
  • v0.17.0 の i18n 環境変数(APP_LOCALE/APP_LOCALES/LOCALE_COOKIE/LOCALE_PATH_PREFIX)を一覧に追記
  • 「自動配線」を「自動で DI コンテナに登録」に。直訳の配線(wiring)が不明瞭なため明確化
  • バージョン差分表記(vX.Y.Z 追加/破壊的変更/依存バージョン注記)を削除し現在形に整理
  • 新規作成