【问题标题】:Update .env value via Laravel通过 Laravel 更新 .env 值
【发布时间】:2017-08-01 08:05:09
【问题描述】:

例如,如果我的 .env

APP_ENV=local
APP_URL=http://localhost:8888/
APP_DEBUG=true
FACEBOOK_APP_ID = ABC

我知道在 Laravel 中我们可以通过这样做来访问我们的 .env 文件

echo env('APP_ENV'); --> 'local'
echo env('APP_URL'); --> 'http://localhost:8888/'

但我想知道是否有办法以编程方式设置它

Ex. env('APP_ENV') == 'production';

【问题讨论】:

  • 您必须写入该文件,但通常最好将您的 Laravel 安装配置为没有权限这样做。不过,config('app.env', 'production') 会覆盖 current 请求的配置值。
  • 我只是以APP_ENV为例,但实际上我想更新FACEBOOK_APP_ID之类的其他内容,基于某个帐户等...
  • 如果我想在我的 .env 文件中更新我的FACEBOOK_APP_ID,这个config('FACEBOOK_APP_ID.env', '123') 是否有效?或者类似的东西?
  • 不,不会的。您确实应该通过部署系统或直接编辑来更改 .env 文件。
  • .env 文件不应该是您的配置文件,而是您的配置模板。您的设置应该存储在外部,最好是作为环境变量存储在您的主机中。此外,能够像这样编辑它是一种非常糟糕的安全做法......你真的不想这样做。

标签: php laravel laravel-5 environment-variables laravel-5.1


【解决方案1】:

这可能会有所帮助。

function setEnv($name, $value)
{
    $path = base_path('.env');
    if (file_exists($path)) {
        file_put_contents($path, str_replace(
            $name . '=' . env($name), $name . '=' . $value, file_get_contents($path)
        ));
    }
}
setEnv('APP_ENV','abc');

【讨论】:

  • 一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助。感谢您提高答案的参考价值并使其更易于理解!
【解决方案2】:

你可以使用:

putenv("APP_ENV=production");

因为env 只是getenv 的一个便利包装器,它会进行一些类型转换。

注意:这不是永久性的,因为它会在下一个请求发生时被.env 覆盖。

【讨论】:

  • @Linesofcode 没错,这在 Laravel 5.8+ 中不起作用,因为方法 env 已更改,不再使用 getenv
【解决方案3】:

试试这个

$path = base_path('.env');

if (file_exists($path)) {
file_put_contents($path, str_replace(
    'APP_KEY='.$this->laravel['config']['app.key'], 'APP_KEY='.$key, file_get_contents($path)
));
}

取自这里stack answer

【讨论】:

  • 如果我想将 FACEBOOK_APP_ID 之类的自定义键更新为任何字符串怎么办。你的建议还能用吗?
  • 这应该适用于您想要更新的任何 var,只需将“APP_KEY”换成“FACEBOOK_APP_ID”
  • 好的。这是$this->laravel['config']['app.key'] 做什么?当我想使用这个FACEBOOK_APP_ID...时,我认为我不应该这样做
  • 获取“APP_KEY”的当前文本,下一行用新的替换该键
  • 你能检查我的第一个参数 str_replace() 吗? 'FACEBOOK_APP_ID='.$this->laravel['config']['app.key'] ...
猜你喜欢
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 2019-08-16
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多