使用PHP更新.env值
我知道你们中的一些人可能认为这会导致安全问题 如果您需要更改环境变量,我建议您只需更改使用PHP更新.env值,php,laravel,laravel-5,environment-variables,laravel-5.8,Php,Laravel,Laravel 5,Environment Variables,Laravel 5.8,我知道你们中的一些人可能认为这会导致安全问题 如果您需要更改环境变量,我建议您只需更改.env文件并重新缓存配置(如果在生产环境中)。您当前的实现可能对安全问题非常敏感 如果确实希望在运行时以编程方式更改环境变量,则始终可以使用config()helper方法 config(['mailing. reporting' => false]); 这也记录在了 编辑 所以我认为您正在实现的env变量可能有点不正确。环境变量本身不应在应用程序的运行时更改。调用env()函数的唯一位置是在配置文件
.env
文件并重新缓存配置(如果在生产环境中)。您当前的实现可能对安全问题非常敏感
如果确实希望在运行时以编程方式更改环境变量,则始终可以使用config()
helper方法
config(['mailing. reporting' => false]);
这也记录在了
编辑
所以我认为您正在实现的env变量可能有点不正确。环境变量本身不应在应用程序的运行时更改。调用env()
函数的唯一位置是在配置文件中(可在config
目录中找到)。因此,您需要在config/mailing.php
config文件中创建一个新密钥
'reporting' => env('MAIL_REPORT', false),
现在,无论何时需要将此变量设置为true,都可以更改.env
文件或使用第一个给定示例(config(['mailing.reporting'=>false]);
)
请阅读。中的详细信息。有两个嵌套函数定义是否正常?此外,在Laravel(和Symfony)中,读取.env并将变量设置为环境变量,但调用
setEnv()
不会更新文件。您可能需要将文件解析为文本或使用一个库来解析。好的,让我拉出函数并重试。为什么要以编程方式更新.env
文件?这真是糟糕的做法!我只想更新特定的标志,因为有时候,我想看到报告,有时候,我不想。如果我有办法做到这一点,我只需要连接一条路径来触发该功能——每当我想通过电子邮件查看报告时,通过iPhone Apple快捷方式即可。@Jerodev我只需要2个标志就可以做到这一点。我将在该功能中进行检查。我不会在一百万年内打开这条通往世界的道路,但这是我的下一步。为什么邮寄.report
?我的标志拼写如下MAIL\u REPORT
这只是一个关于配置的猜测。您在哪里使用MAIL\u报告
env变量?我想在你的一个配置文件中?我已经试过了:,我仍然得到了正确的答案。我应该看到它被更新为false
我的答案将完全满足您的需要。但是,您需要改变@kyo的思维方式。正如Dees所提到的,更改.env是个坏主意。如果您需要类似的行为,请更改mail.php,正如他所提到的,这是最好的解决方案。在stackoverflow中,您应该给出准确的答案,您想要的准确答案是错误的,他给出的答案解决了问题。