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:是不是可以在捕获异常时记录堆栈跟踪并继续执行?
Laravel 8 Sanctum SPA Auth - 未按要求设置会话存储
实时服务器上的 Laravel Coinbase API Http 异常错误,但适用于 Xampp
gitlab恢复数据出现错误提示:Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of exte