관리자 환경설정 저장값이 config 를 덮는 기존 설계는 공유호스팅을 1차 대상으로 삼은 결과다. .env 를 배포 기준값으로 관리하는 설치에서는 그 설계가 반대로 작동해, 설치기가 defaults 를 시드하는 순간부터 .env 의 28개 항목이 오류도 로그도 없이 사문화된다. G7_ENV_PRIORITY 옵트인으로 그 소유권을 키 단위로 되돌린다. 스위치를 켜지 않은 설치는 전 경로가 조기 return 이라 동작이 100% 동일하다. 명시 여부는 config 빌드 시점에 캡처한다 — 런타임 env 는 config:cache 환경에서 null 로 고정되어 판정이 영구 미발동한다(attachment.disk_explicit 와 같은 함정). 판정은 strict 라 APP_DEBUG=false·REDIS_DB=0 같은 falsy 명시도 명시로 본다. 잠금은 그 키의 주입만 건너뛰는 것이지만, 제거된 키의 부재를 값으로 읽는 자리가 있으면 형제 설정까지 무너진다. 게이트(웹소켓 토글·메일 드라이버·디버그 모드)와 기본값 주입(mailgun.endpoint·ses.region), 형제 폴백(reverb server endpoint), 파생 판정(storage_driver→attachment.disk)을 유효값으로 보정했다.
46 lines
1.8 KiB
PHP
46 lines
1.8 KiB
PHP
<?php
|
|
|
|
use App\Support\EnvPriority;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| .env 키 단위 우선 (G7_ENV_PRIORITY)
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| G7 은 관리자 환경설정(storage/app/settings/*.json)을 운영 SSoT 로 삼고 그 값을
|
|
| config() 에 주입한다. 이 스위치를 켠 설치에서는 `.env` 에 값이 명시된 키만
|
|
| 그 주입에서 제외되어 `.env` 가 권위를 갖는다. 스위치를 켜지 않으면 아무 것도
|
|
| 달라지지 않는다 (기본 OFF — 기존 설치 무영향).
|
|
|
|
|
| explicit 는 "그 env 변수가 명시되었는가" 만 담는 불리언 맵이다. 값 자체는 이미
|
|
| 각 config/*.php 가 env() 로 읽어 갖고 있으므로 여기에 다시 담지 않는다.
|
|
|
|
|
| 판별을 여기서 캡처하는 이유: env() 직접 호출은 config:cache 환경에서 null 로
|
|
| 고정되므로 런타임 판별이 영구 미발동한다 (config/attachment.php 의 disk_explicit
|
|
| 와 동형 함정). 이 파일은 config:cache 시점에 평가되어 결과가 캐시에 박제된다.
|
|
|
|
|
| 명시 판정은 strict 다 — `KEY=` (빈 값)과 미설정만 미명시로 본다. `APP_DEBUG=false`
|
|
| 나 `REDIS_DB=0` 처럼 falsy 한 값을 명시한 경우는 명시로 취급한다 (?: 를 쓰면
|
|
| 그 값들이 미명시로 오판된다).
|
|
|
|
|
| `.env` 만 편집한 경우에는 config:cache 를 다시 실행해야 반영된다. 설정 저장 경로는
|
|
| SettingsService 가 ConfigCacheHelper 로 재빌드하므로 추가 조치가 필요 없다.
|
|
|
|
|
*/
|
|
|
|
$explicit = [];
|
|
|
|
foreach (EnvPriority::envVars() as $var) {
|
|
if (! in_array(env($var), [null, ''], true)) {
|
|
$explicit[$var] = true;
|
|
}
|
|
}
|
|
|
|
return [
|
|
|
|
'enabled' => (bool) env('G7_ENV_PRIORITY', false),
|
|
|
|
'explicit' => $explicit,
|
|
|
|
];
|