通过Laravel中的控制器更改环境值

时间:2019-01-24 06:29:26

标签: php laravel environment-variables

是否可以通过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

有什么主意吗?

3 个答案:

答案 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();