如何动态地以编程方式在 laravel 中设置 .env 值

2022-08-30 09:37:45

我有一个自定义CMS,我正在Laravel中从头开始编写,并且希望在用户设置后从控制器设置值,即数据库详细信息,邮件程序详细信息,一般配置等,并希望为用户提供使用我正在制作的GUI随时随地更改它们的灵活性。env

所以我的问题是,当我需要从控制器接收时,如何将从用户接收的值写入文件。.env

在旅途中构建文件是一个好主意,还是有任何其他方法可以解决它?.env

提前致谢。


答案 1

由于Laravel使用配置文件来访问和存储数据,因此您可以使用以下方法动态设置此数据:.envconfig()

config(['database.connections.mysql.host' => '127.0.0.1']);

要获取此数据,请使用:config()

config('database.connections.mysql.host')

若要在运行时设置配置值,请将数组传递给帮助程序config

https://laravel.com/docs/5.3/configuration#accessing-configuration-values


答案 2

小心!并非 laravel .env 中的所有变量都存储在配置环境中。要覆盖真实的 .env 内容,只需使用:

putenv(“CUSTOM_VARIABLE=hero”);

像往常一样阅读,env('CUSTOM_VARIABLE')或env('CUSTOM_VARIABLE', 'devault')

注意:根据应用的哪个部分使用 env 设置,您可能需要尽早设置变量,方法是将其放入索引.php或引导.php文件中。在应用服务提供商中设置它可能为时已晚,无法使用 env 设置的某些包/用法。


推荐