How to update laravel .env dynamic from backend
Comment (0)
Admin
260
Hello Dev!
Today i'll show how to update laravel .env dynamicely from backend with database store.
First you have to create a customer helper function. If you don't know how to create Helper Function please Clicke here.
Step 1. Go to helper function.
public static function updateDotEnv($key, $newValue, $delim='')
{
$path = base_path('.env');
// get old value from current env
$oldValue = env($key);
// was there any change?
if ($oldValue === $newValue) {
return;
}
// rewrite file content with changed data
if (file_exists($path)) {
// replace current value with new value
file_put_contents(
$path, str_replace(
$key.'='.$delim.$oldValue.$delim,
$key.'='.$delim.$newValue.$delim,
file_get_contents($path)
)
);
}
}
Step 2. without database store
//Here we update email configyration in .env
public function emailConfigUpdate(Request $request)
{
Helper::updateDotEnv('MAIL_MAILER',$request->driver);
Helper::updateDotEnv('MAIL_HOST',$request->host);
Helper::updateDotEnv('MAIL_PORT',$request->port);
Helper::updateDotEnv('MAIL_USERNAME',$request->user_name);
Helper::updateDotEnv('MAIL_PASSWORD',$request->password);
Helper::updateDotEnv('MAIL_ENCRYPTION',$request->encryption);
Helper::updateDotEnv('MAIL_FROM_ADDRESS',$request->sender_email);
Helper::updateDotEnv('MAIL_FROM_NAME',$request->sender_name);
return redirect()->back()->with('success','Successfully Updated!');
}
Step 3. with database store
//Here we update email configyration in .env and database
public function emailConfigUpdate(Request $request)
{
$data = EmailConfig::first();
$data->driver = $request->driver;
$data->host = $request->host;
$data->port = $request->port;
$data->encryption = $request->encryption;
$data->user_name = $request->user_name;
$data->password = $request->password;
$data->sender_name = $request->sender_name;
$data->sender_email = $request->sender_email;
$data->save();
Helper::updateDotEnv('MAIL_MAILER',$request->driver);
Helper::updateDotEnv('MAIL_HOST',$request->host);
Helper::updateDotEnv('MAIL_PORT',$request->port);
Helper::updateDotEnv('MAIL_USERNAME',$request->user_name);
Helper::updateDotEnv('MAIL_PASSWORD',$request->password);
Helper::updateDotEnv('MAIL_ENCRYPTION',$request->encryption);
Helper::updateDotEnv('MAIL_FROM_ADDRESS',$request->sender_email);
Helper::updateDotEnv('MAIL_FROM_NAME',$request->sender_name);
return redirect()->back()->with('success','Successfully Updated!');
}
Hopefully this will hepl for you
Thank you
Comments (0)
Your Comment