在 Laravel 5 中动态编辑 .env 是个好主意吗?

Posted

技术标签:

【中文标题】在 Laravel 5 中动态编辑 .env 是个好主意吗?【英文标题】:Is it a good idea to edit .env dynamically in Laravel 5? 【发布时间】:2016-12-05 00:31:51 【问题描述】:

我正在构建一个管理面板,因此我需要通过前端界面为最终用户配置我的 Laravel 5 应用程序的一些核心设置(如 smtp 设置等)。

我最初的想法是在缓存的同时使用数据库作为设置存储(以避免每次访问配置值时都发出数据库调用)。但是,似乎Facades are loaded after config files,因此下面的代码不起作用:

<?php
// app/config/custom_settings.php

return [
    'key' => Cache::get('key');
];

因此,我正在考虑以编程方式将用户的配置直接写入 .env 文件。这是一个好主意,还是将来会变成令人头疼的问题?

【问题讨论】:

您应该将它们作为平面文件存储在storage/app 中。您可以将它们读入 Config、覆盖值或编写配置处理程序。处理程序可以为您提供一些优势,例如验证设置。 【参考方案1】:

为什么不将其存储在数据库中、用户表或其他相关表中?

我认为 .env 文件用于全局设置(数据库、邮件配置、缓存配置...),但它没有考虑存储最终用户配置。

【讨论】:

我将更新问题以解决这些问题。但是,当我正在构建管理面板时,我需要让用户能够修改特定于应用程序的配置,例如 smtp 和其他配置。

以上是关于在 Laravel 5 中动态编辑 .env 是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.1 中改变环境?

Laravel/Lumen 5.3.3:在迁移中覆盖 env 值

在 Laravel 5.1 中使用 .env 设置存储路径

如何为 dotenv 获取特定于环境的 .env 文件(在 Laravel 5 中)

Laravel 5 在 AJAX 密集型应用程序中丢失会话和 .env 配置值

Laravel 5 - env() 总是返回 null