Как я могу изменить переменные .env в Laravel 6.0 контроллером? - PullRequest
0 голосов
/ 10 февраля 2020

Я делаю систему на Laravel, где я хочу дать права администратору изменять некоторые переменные .env, такие как настройки почты (сервер или порт) и т. Д. c. Как мне это сделать?

1 Ответ

1 голос
/ 10 февраля 2020

Я создал метод changeEnv для того же:

public function changeEnv($data = array()){
      if(count($data) > 0){

        // Read .env-file
        $env = file_get_contents(base_path() . '/.env');

        // Split string on every " " and write into array
        $env = preg_split('/\s+/', $env);;

        // Loop through given data
        foreach((array)$data as $key => $value){

          // Loop through .env-data
          foreach($env as $env_key => $env_value){

            // Turn the value into an array and stop after the first split
            // So it's not possible to split e.g. the App-Key by accident
            $entry = explode("=", $env_value, 2);

            // Check, if new key fits the actual .env-key
            if($entry[0] == $key){
              // If yes, overwrite it with the new one
              $env[$env_key] = $key . "=" . $value;
            } else {
              // If not, keep the old one
              $env[$env_key] = $env_value;
            }
          }
        }

        // Turn the array back to an String
        $env = implode("\n", $env);

        // And overwrite the .env with the new data
        file_put_contents(base_path() . '/.env', $env);

        return true;
      } else {
        return false;
      }
    }

использование:

$this->changeEnv(['lastEvaluatedKeyAU' => 'randomID-or-randomString']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...