未指定应用程序加密密钥

415

我正在尝试像这样使用Artisan命令:

php artisan serve

它显示:

Laravel开发服务器已启动:http://127.0.0.1:8000

然而,它不会自动启动,当我手动输入http://127.0.0.1:8000时,会显示以下错误:

RuntimeException:未指定应用程序加密密钥。

这个问题的原因是什么,如何修复?

我正在使用Laravel框架5.5-dev。


如果您的.env文件需要更改,请参考:https://dev59.com/fFoV5IYBdhLWcg3wauOP#36279613 - Nameishi
2
{btsdaf} - Chris Adams
27个回答

680

来自Laravel - The PHP Framework For Web Artisans的加密文档

"在使用Laravel的加密器之前,您必须在config / app.php配置文件中设置一个密钥选项。 您应该使用php artisan key:generate 命令生成此密钥"

来自Laravel - The PHP Framework For Web Artisans的加密文档:

"Before using Laravel's encrypter, you must set a key option in your config/app.php configuration file. You should use the php artisan key:generate command to generate this key"

我在google.com上使用以下查询找到了它: "laravel add encrption key"(是的,即使有拼写错误也可以!)

请注意,如果.env文件包含密钥但仍然出现应用程序密钥错误,请运行php artisan config:cache来清除和重置配置。


2
对于遇到相同问题的其他人,请在终端中输入以下命令: cp .env.example .env php artisan key:generate - Nameishi
12
对我来说,“php artisan key:generate”根本不起作用。它给了我相同的错误提示“未指定任何应用程序加密密钥”,请问有什么解决办法吗? - Oniya Daniel
7
这对我很有用,但是在此之前,我必须将文件.env.example重命名为.env才能让它正常运行,否则我会收到“ .env: 没有这样的文件”错误。 - Webomatik
4
操作前需要创建一个空的.env文件,并将.env.example文件中的内容复制到.env文件中。.env.example文件有一行'APP_KEY=',其中'APP_KEY'是键,没有指定值。如果没有这个'APP_KEY='行,似乎它不会添加生成的密钥到.env文件中。然后我还需要运行'php artisan config:cache',并重新启动服务器,才能使其起作用。 - Sami El Maameri
在生成密钥后,不要忘记运行“php artisan config:cache”。特别是在从另一个服务器迁移或对配置或工作应用程序的.env进行更改时,您需要这样做。 - James Bailey
显示剩余2条评论

224
在我的情况下,我也需要重置缓存的配置文件:
php artisan key:generate
php artisan config:cache

1
php artisan config:cache 是什么?它有什么用处? - Pathros
2
@Pathros 用来创建/重新生成缓存的配置文件。 - Leonid Dashko
5
除此之外,首先确保你的 ".env" 文件至少包含一个空的键选项,例如:APP_KEY= - Top-Master
2
或者,用于本地开发,请使用 php artisan config:clear 命令,这样就不会生成新的缓存版本。 - Daniel Dewhurst
“php artisan config:cache” 是我错过的。我刚输入完这个命令,这个页面就加载出来了 :) - sr9yar
如果Laravel已经缓存了配置值,更新.env文件不会立即生效。您需要使用php artisan config:cache刷新配置缓存或使用php artisan config:clear清除旧缓存,以使更改生效。 - Shakil Alam

65
在您的项目根文件夹中打开命令提示符,执行以下命令:

php artisan key:generate

它将为您的应用程序生成应用程序密钥。

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


34
  1. .env.example 复制为 .env

    cp -a .env.example .env

  2. 生成一个密钥:

    php artisan key:generate

  3. 然后才能运行:

    php artisan serve


1
糟糕,这是关键步骤!一个新的Laravel项目需要一个.env文件,否则什么都不会工作。谢谢,Adam。 - Eric L.

26

只需运行此命令:

php artisan key:generate

1
是的,但许多托管服务器没有命令行访问权限,那该怎么办? - Dhiraj
2
大多数支持SSH连接。从您的终端运行ssh yourusername@server_ip。 - Didinya Johnson

19
如果没有 .env 文件,可以通过运行 cp .env.example .env 命令创建一个。 php artisan key:generate 命令可以生成加密密钥。

5
在上述步骤完成后,使用 php artisan config:cache 命令清除缓存。 - Sabyasachi Ghosh
清除缓存通常只需要在生产/暂存环境中执行,而不需要在开发环境中执行(除非您喜欢在开发过程中缓存视图)。 - killstreet

15
在您的项目根目录中打开命令提示符并运行。
php artisan key:generate

那么

php artisan config:cache

然后

如果在设置键值之后仍然遇到相同的错误,则只需从.env文件中复制APP_KEY值,并将其粘贴到config / app.php中与'key' => 'YOUR KEY'一起使用,

然后再次运行

php artisan config:cache

13

实际上,我不得不向我的项目中添加一个.env文件,然后复制.env.example的内容,以便key:generate能够正常工作。不确定为什么在我开始项目时没有创建.env文件。


1
这可能取决于您如何安装Laravel...“在全新的Laravel安装中,您的应用程序根目录中将包含一个.env.example文件。如果您通过Composer安装Laravel,则此文件将自动重命名为.env。否则,您应该手动将该文件重命名。” - #环境配置 - Sᴀᴍ Onᴇᴌᴀ
另外,如果您从一个 .env 文件可能在 .gitignore 中的 repo 克隆了该项目,则还需要创建它。根据 Laravel 文档:“您的 .env 文件不应提交到应用程序的源代码控制中,因为使用您的应用程序的每个开发人员/服务器都可能需要不同的环境配置”。 - Sami El Maameri
我还发现,如果你从云端(我使用的是Windows),例如Google Drive、Sky Drive等下载它,.env和.env.example文件会被命名为_env、_env.example等。 在这种情况下,我将文件重命名后,只需运行“php artisan key:generate”即可。 - Tim Kruger

12

三个步骤:

生成新密钥 php artisan key:generate

清除配置信息 php artisan config:clear

更新缓存 php artisan config:cache


11
php artisan key:generate
php artisan config:cache

这对我很有用,但必须在Windows命令提示符中完成。

在PHPStorm终端内执行无效。


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