未指定应用程序加密密钥


255

我是Laravel的新手,正在尝试使用Artisan命令...

php artisan serve

显示...

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

但是,它不会自动启动,当我手动输入http://127.0.0.1:8000时,它将显示此错误:

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

有任何想法吗?我正在使用Laravel Framework 5.5-dev。


或者,如果您的.env文件需要更改,请参考:stackoverflow.com/questions/36276767/…–
Nameishi

2
下面的答案是正确的:但是,如果您首先运行“ php artisan serve”并具有活动的Web服务器会话,则将需要重新启动服务器(终端中的control-c停止)以使更改在您生效后生效将密钥添加到您的.env文件。
克里斯·亚当斯

Answers:


437

来自加密-Laravel-Web Artisans的PHP框架

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

我发现在google.com中使用此复杂的互联网查询:

“ laravel添加加密密钥”(是的,即使输入错误也可以使用!)


22
我用谷歌搜索了整个错误,但没有发现任何错误,只是用谷歌搜索了设置的加密密钥并找到了答案。感觉像个傻瓜。谢谢。对于任何到达这里的人,请运行:php artisan key:generate
卡洛斯F

对不起,您是否将php artisan key:generate放入终端?因为我收到一个ErrorException
Nameishi

1
对于遇到我问题的其他用户,请在终端cp .env.example .env php中输入工匠key:generate
Nameishi

5
php artisan key:generate甚至对我都不起作用。给我同样的错误没有指定应用程序加密密钥,请任何解决方案?
Oniya Daniel

7
这对我有用,但是我首先必须将文件.env.example重命名为.env才能起作用,否则,我将收到“ .env:无此类文件”错误。
Webomatik '17

129

就我而言,我还需要重置缓存的配置文件:

php artisan key:generate
php artisan config:cache

5
我忘了清除缓存后,总会看到这个答案
vijayrana

3
这是所有答案中都没有的。非常感谢!:)
阿曼·阿拉姆

1
php artisan config:cache为了什么 为什么有用?
Pathros

2
@Pathros创建/重新生成缓存的配置文件
Leonid Dashko '19

1
除此之外,首先,请确保您的“ .env”文件至少包含空键选项,例如:APP_KEY=
Top-Master

54

在项目的根文件夹中打开命令提示符,然后运行以下命令:

php artisan key:generate

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

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


23

只需运行以下命令:

php artisan key:generate

1
是的,但是许多托管服务器没有命令行访问权限,怎么办?
Dhiraj

2
大多数支持ssh连接。从终端运行ssh yourusername @ server_ip
DJ

21
  1. 复制.env.example.env

    cp -a .env.example .env

  2. 生成密钥:

    php artisan key:generate

  3. 然后才运行:

    php artisan serve


哎呀 这是关键的一步!一个新的Laravel项目需要一个.env文件,否则将无法正常工作。谢谢,亚当。
Eric L.19年

16

cp .env.example .env如果不存在.env文件。 php artisan key:generate命令对我有用。它生成加密密钥


4
php artisan config:cache完成上述步骤后,使用命令清除缓存。
Sabyasachi Ghosh

在生产/暂存中主要需要清除缓存,但在开发过程中则不需要。(除非您喜欢在开发过程中缓存视图)。
killstreet

14

实际上,我必须将.env文件添加到我的项目中,然后复制.env.example的内容,以便该文件key:generate可以工作。不知道为什么启动项目时未创建.env文件。


1
这可能取决于您如何安装Laravel ...“ 在全新的Laravel安装中,您的应用程序的根目录将包含一个.env.example文件。如果通过Composer安装Laravel,则该文件将自动重命名为.env。否则,您应该重命名该文件。手动档。 “ - #Environment配置
SᴀᴍOnᴇᴌᴀ

同样,如果您从可能在.gitignore中的.env文件的仓库中克隆了项目,那么您也需要创建它。从Laravel文档中:“您的.env文件不应提交给应用程序的源代码控制,因为使用该应用程序的每个开发人员/服务器都可能需要不同的环境配置”
Sami El Maameri

我还发现,如果您从云端(我正在使用Windows)(例如Google驱动器,天空驱动器)下载它,则.env,.env.example文件将被命名为_env,_env.example等。在这种情况下,我相应地重命名了文件,然后运行了“ php artisan key:generate”。
蒂莫西·克鲁格

11
php artisan key:generate
php artisan config:cache

为我工作,但必须在Windows的命令提示符下完成。

在PHPStorm的终端中执行此操作无效。


11

在Laravel应用程序上工作时,您可能遇到的一个常见问题是例外:

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

当您下拉现有的Laravel应用程序时,通常会遇到这种情况,在该应用程序中将.env.example文件复制到其中,.env但未为APP_KEY变量。

在命令行中,发出以下Artisan命令以生成密钥:

php artisan key:generate

APP_KEY完成后,将为生成一个随机密钥.env编辑请在您的终端中输入以下命令以清除缓存:php artisan config:cache

另外,如果您使用的是PHP的默认网络服务器(例如php artisan serve),则需要重新启动服务器以更改.env文件值。现在您将看不到此错误消息。


9

在项目的根文件夹中打开命令提示符并运行

php artisan key:generate

然后

php artisan config:cache

然后

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

然后再次运行

php artisan config:cache

7

请按照以下步骤操作:

  1. php artisan key:generate
  2. php artisan config:cache
  3. php artisan serve

即使在.env文件中生成密钥后,我也得到了错误。当我运行“ php artisaan config:cache”时,它清除了缓存,然后仅解决了我的问题。非常感谢。
Pankaj

6

好的,我还要写另一条指令,因为在这里找不到明确的答案。因此,如果您遇到此类问题,请遵循以下步骤:

  1. 将项目根目录中的.env.example文件重命名或复制/重命名为.env

您不仅应该创建一个空的.env文件,还应该使用.env.example的内容填充它。

  1. 在终端中,转到项目根目录(非公共文件夹)并运行

PHP的工匠键:生成

  1. 如果一切正常,终端中的响应应如下所示

已成功设置应用程序密钥[base64:wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA =]。

  1. 现在,只需复制密钥本身,并将其作为值粘贴到您的.env文件中即可。结果行应如下所示:

APP_KEY = base64:wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA =

  1. 在终端运行

PHP的工匠配置:缓存

而已。


所以php artisan key:generate没有自动将密钥添加到您的.env文件吗?
Rwd

不,就我而言。
德米特里·戈尔迪年科'18

4

您可以使用以下命令生成应用程序加密密钥:

php artisan key:generate

然后,使用以下命令创建高速缓存文件以更快地加载配置:

php artisan config:cache

或者,使用以下命令在PHP开发服务器上提供应用程序:

php artisan serve

而已!


3

如果您git clone某个项目,则通常可能会发生这种问题。

  1. 确保有.env文件
  2. 运行php artisan key:generate,然后应该生成APP_KEY在.ENV
  3. 终于运行了php artisan serve,应该可以了。

1

当我手动将Laravel项目的内容(例如,sites / oldname)复制到Mac上的新目录(例如,sites / newname)时,遇到了这个问题。由于我是手动拖放,因此它没有抓取隐藏文件,即“ .env”。当我更仔细地查看站点/旧名称时,我看到了.editorconfig,.env,.env.example,.gitatrributes,.styleci.yml等。

将隐藏文件复制到新目录后,错误消失了。

因此,Laravel表示“未指定应用程序加密密钥”,表示“您的.env文件丢失。”


0

我必须php artisan queue:restart在运行后重新启动我的队列工作程序php artisan key:generate才能使作业正常工作。



0

就我而言,从git克隆项目时没有 .env

文件。因此,我.env从源项目中复制文件并粘贴到当前项目中,并更改其数据库配置并成功运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.