production.ERROR:Laravel 中未指定应用程序加密密钥

Posted

技术标签:

【中文标题】production.ERROR:Laravel 中未指定应用程序加密密钥【英文标题】:production.ERROR: No application encryption key has been specified in Laravel 【发布时间】:2021-06-26 14:48:31 【问题描述】:

在我的 Laravel-8 中,我在即将部署到生产环境时删除了 .env。

在 .env 中,我有:

APP_KEY=base64:JMKPPddG+sPK/ufZKNGwGTStKbMLO2Vnv/4i2fA3j1c=

和配置/应用程序:

'key' => env('APP_KEY'),

在我删除 .env 之前一切正常

当我运行应用程序时,我得到了这个错误:

production.ERROR: Laravel 中没有指定应用程序加密密钥

我不想使用 .env

我该如何解决这个问题?

谢谢

【问题讨论】:

"我不想使用 .env" 为什么不呢?使用.env 有什么问题?那你还想用什么? @brombeer - 我正在考虑安全问题。那里可以检测到我的数据库名称和密码 @user11352561 你的服务器必须有数据库凭证某处 Laravel 可以得到它们。 .env 是标准方式。正确配置后,没有对服务器的 shell 访问权限的任何人都无法访问此文件。 我认为这就是 为什么 .env 存在的原因。它在您服务器的公用文件夹之外,因此如果任何人可以 有权读取您的.env 文件,那么您将面临更严重的安全问题。 Environment File Security 可能值得一读 如果你不想使用.env,你可以使用'key' => "base64:JMKPPddG+sPK/ufZKNGwGTStKbMLO2Vnv/4i2fA3j1c=",但这意味着在源文件中硬编码你的应用程序密钥,这比使用.env要糟糕得多 【参考方案1】:

首先运行这个命令来缓存配置:

php artisan config:cache

然后你可以删除 .env

注意:从您的代码中调用 env() 助手将始终返回 null,因为 .env 值只能从配置文件中访问。 阻止访问服务器中的 .env 文件是一个更好的解决方案。

【讨论】:

以上是关于production.ERROR:Laravel 中未指定应用程序加密密钥的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2不是在ubuntu上从.env上读取的

laravel 队列守护进程邮件因 SSL 错误而停止运行

Laravel:是不是可以在捕获异常时记录堆栈跟踪并继续执行?

Laravel 8 Sanctum SPA Auth - 未按要求设置会话存储

实时服务器上的 Laravel Coinbase API Http 异常错误,但适用于 Xampp

gitlab恢复数据出现错误提示:Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of exte