webman-framework
webman-framework copied to clipboard
env 环境覆盖问题
v1.5.1 中将原来的 createUnsafeImmutable
改成了 createUnsafeMutable
,这会导致逻辑变更:
Immutable 会以系统环境中的 env 为主,.env 为辅 Mutable 会以.env 为主,系统环境中的 env 为辅
请问这改动是否符合改动预期
个人认为 Immutable 的形式应该更符合使用需求,因为一般在 docker 环境,会通过 env 覆盖 .env 的配置的
如果符合预期,这块目前有没有什么办法能做到动态改变 env 的使用模式
目前使用的折中办法:在 docker 环境下,如果通过 env 传递,那 .env 就不要配置这个参数
一般开发者都是以 .env
为主的,用createUnsafeImmutable的话如果改了.env
的配置,reload无法生效,所以改成了createUnsafeMutable
是否可以把 loadEnv 的操作改到 config/app.php 中,这样应用级别可以改这个逻辑,现在放在 bootstrap 里,应用级别不好改(改完下次 framework 升级会被覆盖的)
env不只是用于app.php中,还有数据库等配置
我说的改到 app.php 不是说整块挪到 app.php,是加个配置项,比如:
'env_loader' => function() {
// load env
}
然后 bootstrap 中使用
if ($envLoader = config('app.env_loader')) {
$envLoader();
} else {
// 现在的 load env
}
app 里的这个 config 可能得提前加载,这可能是个问题