即使在laravel中生成了密钥,仍然出现“未指定应用程序加密密钥”错误?

3

我克隆了一个远程存储库中的laravel项目。在克隆后,我运行了所有常规命令,如composer install、passport:install、key:generate和migrate。现在当我尝试进行登录请求或浏览应用程序网址时,我得到了以下错误信息:

"No Application Encryption key has been specified". 

我已经多次生成了密钥,并确认密钥是否存在于.env文件中。尽管一切似乎都是正确的,但我仍然遇到了错误。我还重新启动了应用程序服务器以及Apache服务器,希望能解决问题,但没有成功。现在我不知道该怎么办了。有什么建议吗?


这个回答解决了你的问题吗?未指定应用程序加密密钥 - albus_severus
你正在使用 php artisan serve 吗?如果是的话,请停止它并重新运行。在每次更改 env 文件后,你需要重新启动 php artisan serve - Suman B
@albus_severus 不,它不是这样的。所有的答案都谈到了 key:generate 和 config:clear,而我已经做过了。 - samman adhikari
@SumanB 每次生成新的密钥时,我都按照问题中提到的方法重新启动服务器,但仍然遇到了问题。 - samman adhikari
你正在使用Docker吗? - melicerte
如果Laravel已经缓存了配置值,更新.env文件不会立即生效。您需要使用php artisan config:cache命令刷新配置缓存,或者使用php artisan config:clear命令清除旧缓存,以使更改生效。 - Shakil Alam
4个回答

2
在项目根目录下打开命令提示符,运行以下命令:
php artisan key:generate

它将为您的应用程序生成应用程序密钥。
您可以在.env文件中找到生成的应用程序密钥(APP_KEY)。

1

我相信到目前为止的答案已经提供了这个问题的解决方案。 但是,如果你在Heroku上部署你的Laravel应用程序,如果你在Heroku上使用github deploy选项,当你部署你的应用程序或打开部署后的应用程序URL时,很可能会遇到这种错误响应。

所以,如果你通过Heroku收到这个错误:RuntimeException No application encryption key has been specified

解决方法

在你的Heroku仪表板上,导航到settings,然后点击Reveal Configs Vars 进入你的Laravel本地文件夹,打开.env文件,并复制API_KEY的值。它看起来像这样API_KEY=base64:HDDID98384JD8JD8498W

复制API KEY,返回到你的Heroku仪表板,在reveal configs var部分,在key表单字段中输入API_KEY,然后在value表单字段中粘贴你复制的键值。

保存并刷新你的应用程序。问题应该解决了!


1
有时应用程序无法读取.env文件,从而导致此问题。在这些情况下重新生成密钥是无效的。您可以尝试以下解决方案,我相信其中一个肯定会帮助您。
解决方案#1:chmod -744 .env
解决方案#2:编辑config.php并直接设置密钥,就像这样:
'key' => 'base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=',

修改配置文件后,你可能需要运行命令php artisan config:cache

1
使用这些命令:
php artisan key:generate
php artisan config:cache

并确保在 config/app.php 中的键应该是这样的:

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

在编程中,env() 助手通过键来搜索 .env 文件中的 key=value 对。

你想要做的是这样的:

//in config/app.php
'key' => env(APP_KEY);

//in .env 
APP_KEY=base64:JjrFWC+TGnySLsldPXA*****Hpyjh8UuoPMt6yx2gJ8U=

我已经按照你提到的所有事情都做了,但是没有起作用。 - samman adhikari
@sammanadhikari 在 config/app.php 文件中,你如何称呼键名? - mohammadreza khalifeh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接