首页 > 解决方案 > 通过 laravel 中的控制器更改环境值

问题描述

有什么方法可以.env从 laravel 中的控制器更改我的文件值?

我找到了这个答案,但它返回了

未定义属性: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)
   ));
}

我想在我的管理面板中有选项来在真或假之间更改调试模式,就像我们在控制器中使用工匠命令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

任何想法?

标签: phplaravelenvironment-variables

解决方案


使用这个 DotenvEditor::setKey('APP_KEY', 'new_value')->save();


推荐阅读