是否可以通过laravel中的控制器更改.env
文件的值?
我找到了this answer,但它返回了
未定义的属性: App \ Http \ Controllers \ Admin \ PerformanceController :: $ laravel
$path = base_path('.env');
$key = false;
if (file_exists($path)) {
file_put_contents($path, str_replace(
'APP_KEY='.$this->laravel['config']['app.key'], 'APP_DEBUG='.$key, file_get_contents($path)
));
}
我想在管理面板中使用选项在true或false之间更改调试模式,就像我们在控制器中使用Artisan::call('down')
或Artisan::call('up')
之类的工匠命令一样。
现在我有了这段代码
$path = base_path('.env');
$key = 'true';
if (file_exists($path)) {
file_put_contents($path, str_replace(
'APP_DEBUG='.config('app.debug'), 'APP_DEBUG='.$key, file_get_contents($path)
));
}
此代码确实有效,但问题在于它不会删除旧值。
APP_DEBUG=false
APP_DEBUG=truefalse
or
APP_DEBUG=falsefalse
有什么主意吗?
答案 0 :(得分:0)
更改.env配置不是一个好主意。而不是使用它,而是在您要更改APP_KEY的位置使用此代码。
确保您没有缓存配置
config(['app.key' => 'YOUR_NEW_KEY']);
答案 1 :(得分:0)
代替使用
$this->laravel['config']['app.key']
尝试config('app.key')
答案 2 :(得分:0)
使用这个 DotenvEditor::setKey('APP_KEY', 'new_value')->save();