config:cache 执行前,为什么要确保配置文件调用了 env 函数?

如果你在部署过程中执行了 config:cache 命令,那么你应该确保配置文件中调用了 env 这个函数。一旦配置被缓存了,将不会加载 .env 文件,对 env 函数的所有调用都将返回 null。
这句话什么意思,字都认识,弄不明白到底是个什么意思??这个命令执行后,就不会加载.env 的配置了,所有地方再调用 env 函数都会返回 null。那么命令执行前确保还是不确保调用 env 函数有什么关系。调用了也行,执行前不调用 env 的情况只要不通过.env 配置好了不也行么,确保这个词弄得迷糊了。为什么非要调用呢?
菜鸟容易钻茄子地,真迷惑啊?大神面前无沟壑,菜鸟脚下全是坑。

not only a learner , but also a user .
ruodee
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

其实就是让你只在配置文件里调用 env 函数,在其他任何地方都不要调用,因为一旦执行 config:cache 之后,你在其他任何地方调用 env 都会返回 null

7年前 评论

其实就是让你只在配置文件里调用 env 函数,在其他任何地方都不要调用,因为一旦执行 config:cache 之后,你在其他任何地方调用 env 都会返回 null

7年前 评论

测试了一下,还真是,当执行了 php artisan config:cache,不能通过 env 获取了

7年前 评论

file
因为如果缓存了,就不会实例化 Dotenv 去把.env 文件加载到环境变量,所以就获取不到了。

7年前 评论
ruodee

@FMW 是的,你说的对。“确保调用了” 让我误入歧义。
---- 以下这句话:
如果你在部署过程中执行了 config:cache 命令,那么你应该确保配置文件中调用了 env 这个函数。一旦配置被缓存了,将不会加载 .env 文件,对 env 函数的所有调用都将返回 null。
----- 修改成:
如果你在部署过程中执行了 config:cache 命令,配置就会被缓存,所以将不能再通过 env 函数加载 .env 文件,且再对 env 函数调用都将都返回 null。
---- 消除歧义。
并不是配置文件中非要调用.env 这个函数,只是意思是如果配置缓存后,laravel 的配置文件被缓存,再调用.env 函数,对缓存的配置文件无效。

7年前 评论

这个意思应该就是,设置缓存一般用于正式环境,正式环境是不会有.env 文件。如果你是本地开发环境去设置,.env 里面配置就失效了。

6年前 评论