错误:未指定应用程序加密密钥。但它存在

Posted

技术标签:

【中文标题】错误:未指定应用程序加密密钥。但它存在【英文标题】:Error: No application encryption key has been specified. But it exist 【发布时间】:2019-03-29 20:36:09 【问题描述】:

我有一个运行良好的 Laravel 应用程序,但是每当我查看日志文件时,都会出现数百个错误

production.ERROR:未指定应用程序加密密钥。 "exception":"[object] (RuntimeException(code: 0): 未指定应用程序加密密钥。

存在于日志文件中。 .env 文件中有一个密钥,我也尝试了php artisan key:generate 命令,但日志文件中仍然生成错误,对用户没有任何可见的错误。

此错误仅出现在生产服务器的日志文件中,而不出现在我的开发电脑中。

【问题讨论】:

你能显示你的环境的APP_KEY= 值吗? APP_KEY=base64:g7Ta+C5qVWSkdni9/OUsoBNA9GgE3ANrtOquE+JfQv0= @EsmatullahArifi 请注意,您永远不应该以这种方式公开分享您的应用密钥。 @GustavoStraube 没什么大不了的,在分享之前已经改过很多次了。我分享旧的只是为了证明我有正确的密钥。这不是真正的钥匙。 【参考方案1】:
php artisan key:generate 

这将生成一个随机密钥,您必须重新启动服务器,您应该不会再看到错误消息。

运行以下命令清除缓存。

php artisan config:clear
php artisan config:cache

【讨论】:

我已经告诉过我使用了这个命令,但错误日志没有变化。我也尝试了最后两个命令。 @EsmatullahArifi,你确定你有.env 文件中的密钥吗?删除 .env.example 文件(如果存在) 是的,我确信 100%。这只发生在生产服务器中。在我自己的计算机中,日志中没有错误 您介意解释一下每个命令的作用吗?我遇到了同样的问题,即使我一直在运行 config:clear,错误仍然会显示。现在我还运行了 config:cache 并且我不想让它陷入困境,但它看起来成功了。【参考方案2】:

我遇到了同样的问题,我搜索了很多,但在 YouTube 视频评论中我找到了一个解决方案(我不确定这个解决方案是否好用)但对我有用 从 .env 文件中复制 APP_KEY 并在 app.php 文件中过去(位于:your_project\config) 你的 app.php 看起来像

.
. 
.
‘key’ => env(‘APP_KEY’, ‘base64:insert key here’),
.
. 
.

【讨论】:

【参考方案3】:

我被这个问题困扰了一整天,最后发现这是 .env 文件的权限问题。通过scp上传的文件没有读取权限。

chmod -744 .env

希望这可以帮助遇到同样问题的其他人。

【讨论】:

【参考方案4】:

检查 config/app.php 文件中的“key”变量,它应该是

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

这样制作

'key' => "Your key",

然后重启你的php服务器。

【讨论】:

我检查了两个文件(.env 和 app.php)中的一切都正常【参考方案5】:

试试这些命令:

composer install
php artisan key:generate
php artisan config:cache

【讨论】:

composer dump-autoload 怎么样? 你能发布你的config/app.php吗?并隐藏敏感凭据。【参考方案6】:

在.env中添加空的APP_KEY=如果不存在则不带值,然后在bootstrap/cache中删除config.php运行php artisan key:generate

【讨论】:

【参考方案7】:

你需要做的就是

php artisan key:generate 

参考

https://web-brackets.com/discussion/5/-solved-no-application-encryption-key-has-been-specified-

【讨论】:

【参考方案8】:

如果您使用的是 ubuntu,请尝试授予权限: *chmod -R 777 **

查看link,希望对您有所帮助。

【讨论】:

【参考方案9】:

是的,php artisan key:generate 将为您生成密钥。像这样在控制台中

$php artisan key:generate Application key [base64:soAqqNW/Kk85OclhmCKXj+u4nZGF142gEZHEY0Y1NXA=] set successfully.

您需要复制此密钥并将其放入您的 .env 文件中的APP_KEY= 参数中。

【讨论】:

仍然存在错误消息。我已经应用了这一步。 @EsmatullahArifi 请检查您对项目文件的访问权限

以上是关于错误:未指定应用程序加密密钥。但它存在的主要内容,如果未能解决你的问题,请参考以下文章

将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误

“php artisan key:generate”给出“未指定应用程序加密密钥”。错误

未指定应用程序加密密钥(反应)

docker 容器中未指定应用程序加密密钥

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

DPAPI 密钥存储和恢复