【问题标题】:未指定应用程序加密密钥
【发布时间】:2017-12-04 00:16:53
【问题描述】:

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

php artisan serve

它显示...

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

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

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

有什么想法吗?我正在使用 Laravel 框架 5.5-dev。

【问题讨论】:

  • 或者如果您的 .env 文件需要更改参考:stackoverflow.com/questions/36276767/…
  • 下面的答案是正确的:但是,如果您首先运行“php artisan serve”并且有一个活动的 Web 服务器会话,您将需要重新启动服务器(终端中的 control-c 以停止)以将密钥添加到 .env 文件后使更改生效。

标签: php laravel laravel-5 laravel-5.5 laravel-artisan


【解决方案1】:

只需运行命令 php artisan key:generate.. 仍然存在问题然后再运行一个命令 php artisan config:cachephp artisan cache:clear ..

现在运行 php artisan serve

【讨论】:

    【解决方案2】:

    如果运行php artisan key:generate 后问题仍未解决,请检查您的.env 文件。

    搜索APP_KEY=

    如果不存在,手动将其添加到.env 文件并再次运行php artisan key:generate

    在此之后,您将在.env 文件中看到生成的密钥。

    复制该密钥并将其粘贴到/config/app.php(也可以在那里搜索APP_KEY)。你应该在app.php 文件中得到这样的结果

    'key' => env('APP_KEY', 'base64:...'),

    然后运行php artisan serve(您可能需要在某个时候运行php artisan config:cache。不是100% 确定何时)

    【讨论】:

      【解决方案3】:

      来自Encryption - Laravel - The PHP Framework For Web Artisans

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

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

      “laravel add encrption key”(是的,即使有错字也可以使用!)

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

      【讨论】:

      • 我用谷歌搜索了整个错误,但没有任何发现,只是用谷歌搜索了 set encriptyon key 并发现了。感觉自己像个傻瓜。谢谢。对于到达这里的任何人,只需运行:php artisan key:generate
      • 对于遇到我的问题的任何其他人,请将其输入到终端 cp .env.example .env php artisan key:generate
      • php artisan key:generate 甚至不适合我。给我同样的错误没有指定应用程序加密密钥,请问有什么解决方案吗?
      • 这对我有用,但我首先必须将文件 .env.example 重命名为 .env 才能正常工作,否则我会收到“.env: no such file”错误。
      • 有效,但首先您需要创建一个空的 .env 文件,然后将 .env.example 的内容复制到您的 .env 文件中。 .env.exampe 文件有一个“APP_KEY=”行,其中“APP_KEY”是键,没有指定任何值。如果您没有 'APP_KEY=' 行,它似乎不会将生成的密钥添加到 .env 文件中。然后我还必须运行 'php artisan config:cache' 然后重新启动服务器,它才能工作。
      【解决方案4】:

      如果您没有.env 文件,则运行以下命令,否则跳过此

      cp .env.example .env
      

      然后运行以下 artisan 命令,它将为您的项目生成一个应用程序密钥:

      php artisan key:generate
      

      注意:您的APP_KEY 在您的.env 文件中。

      【讨论】:

        【解决方案5】:

        在 Laravel v8.49.0 (PHP v8.0.6) 中遇到同样的问题解决方案

        1. 点击

        生成应用密钥

        1. 立即点击刷新

        【讨论】:

          【解决方案6】:

          分三步:

          生成新密钥php artisan key:generate

          清除配置php artisan config:clear

          更新缓存php artisan config:cache

          【讨论】:

            【解决方案7】:

            我发现这里的大多数答案都不完整。如果其他人仍在寻找这个:

            1. 检查您的 .env 中是否有 APP_KEY=,如果不添加则不带值。
            2. 运行此命令:php artisan key:generate。这会将值填充到 .env 文件中的 APP_KEY。
            3. 最后,运行 php artisan config:cache 以清除您的配置缓存并使用新的 APP_KEY 值重新缓存您的配置。

            【讨论】:

              【解决方案8】:

              有时如果一切都失败了使用这个:

              转到:laravelProject/config/app.php

              找到该行:'key' => 并检查它所指的内容,

              它可以是两个之一:

              案例一:env('APP_KEY') 案例二:"somekeystring"

              对于案例 1: 运行 cp -a .env.example .env 后转到您的 .env 文件 输入一个随机字符串,如10101010101010101010101010101010

              现在,运行php artisan key:generate

              您的密钥将自动更新。

              对于案例 2: 为 Key 10101010101010101010101010101010 的值设置一个随机字符串

              现在,运行php artisan key:generate

              您的密钥将自动更新。

              【讨论】:

                【解决方案9】:

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

                php artisan key:generate
                

                然后

                php artisan config:cache
                

                然后

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

                然后再次运行

                php artisan config:cache
                

                【讨论】:

                  【解决方案10】:

                  只需运行

                  php artisan key:generate
                  

                  它对我有用

                  【讨论】:

                    【解决方案11】:

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

                    【讨论】:

                      【解决方案12】:

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

                      php artisan key:generate
                      php artisan config:cache
                      

                      【讨论】:

                      • 忘记清缓存后总是来看这个答案
                      • 所有答案都缺少这一点。非常感谢! :)
                      • php artisan config:cache 是干什么用的?为什么有用?
                      • @Pathros 创建/重新生成缓存的配置文件
                      • 除此之外,首先,确保您的“.env”文件至少包含空键选项,例如:APP_KEY=
                      【解决方案13】:

                      如果你 git clone 一些项目,那么通常会出现这种问题。

                      1. 确保有.env 文件
                      2. 运行php artisan key:generate然后它应该在.env中生成APP_KEY
                      3. 最后运行php artisan serve,它应该可以工作了。

                      【讨论】:

                        【解决方案14】:

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

                        php artisan key:generate
                        

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

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

                        【讨论】:

                          【解决方案15】:

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

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

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

                          【讨论】:

                            【解决方案16】:

                            您在处理 Laravel 应用程序时可能遇到的一个常见问题是异常:

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

                            当你拉下一个现有的 Laravel 应用程序时,你经常会遇到这种情况,你将 .env.example 文件复制到 .env 但没有为 APP_KEY 变量设置值。

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

                            php artisan key:generate
                            

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

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

                            【讨论】:

                              【解决方案17】:

                              只需运行以下命令:

                              php artisan key:generate
                              

                              【讨论】:

                              • 是的,但是很多托管服务器没有命令行访问权限,那怎么办?
                              • 多数支持 ssh 连接。从您的终端运行 ssh yourusername@server_ip
                              【解决方案18】:

                              按照以下步骤操作:

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

                              【讨论】:

                              • 即使在 .env 文件中生成密钥后,我也遇到了错误。当我运行“php artisaan config:cache”时,它清除了缓存,然后只有我的问题解决了。非常感谢。
                              • 记得指向数据库并关闭 .env 文件。如果 .env 文件打开,错误将继续。
                              【解决方案19】:

                              好的,我再写一条指令,因为这里没有找到明确的答案。因此,如果您遇到此类问题,请按照以下步骤操作:

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

                              你不应该只创建空的 .env 文件,而是用 .env.example 的内容。

                              1. 在终端进入项目根目录(不是公用文件夹)并运行

                              php 工匠密钥:生成

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

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

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

                              APP_KEY=base64:wbvPP9pBOwifnwu84BeKAVzmwM4TLvcVFowLcPAi6nA=

                              1. 在终端运行中

                              php 工匠配置:缓存

                              就是这样。

                              【讨论】:

                              • 所以php artisan key:generate 没有自动将密钥添加到您的 .env 文件中?
                              • 不,就我而言。
                              【解决方案20】:

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

                              php artisan key:generate
                              

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

                              php artisan config:cache
                              

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

                              php artisan serve
                              

                              就是这样!

                              【讨论】:

                                【解决方案21】:

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

                                【讨论】:

                                • 在完成上述步骤后使用php artisan config:cache命令清除缓存。
                                • 生产/登台主要需要清除缓存,但在开发期间不需要。 (除非你喜欢在开发过程中缓存你的视图)。
                                【解决方案22】:
                                php artisan key:generate
                                php artisan config:cache
                                

                                对我有用,但必须在 Windows 上的命令提示符下完成。

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

                                【讨论】:

                                  【解决方案23】:
                                  1. 复制.env.example.env

                                    cp -a .env.example .env

                                  2. 生成密钥:

                                    php artisan key:generate

                                  3. 然后才运行:

                                    php artisan serve

                                  【讨论】:

                                  • 哎呀。这是关键的一步!一个新的 Laravel 项目需要一个 .env 文件,否则什么都做不了。谢谢,亚当。
                                  【解决方案24】:

                                  我实际上必须在我的项目中添加一个 .env 文件,然后复制 .env.example 的内容,这样key:generate 才能工作。不知道为什么我启动项目时没有创建 .env 文件。

                                  【讨论】:

                                  • 这可能取决于你如何安装 Laravel ... "在全新的 Laravel 安装中,你的应用程序的根目录将包含一个 .env.example 文件。如果你通过 Composer 安装 Laravel,该文件将自动重命名为.env。否则,您应该手动重命名该文件。" -#Environment Configuration
                                  • 另外,如果您从 .env 文件可能位于 .gitignore 中的 repo 克隆项目,那么您也需要创建它。来自 Laravel 文档:“您的 .env 文件不应提交给应用程序的源代码管理,因为使用您的应用程序的每个开发人员/服务器都可能需要不同的环境配置”
                                  • 我还发现,如果你从云端下载它(我使用的是 windows),即 google-drive、sky-drive 等,.env、.env.example 文件被命名为 _env、_env .example 等。在这种情况下,我相应地重命名了文件,然后运行 ​​'php artisan key:generate'。
                                  猜你喜欢
                                  • 2021-10-24
                                  • 2021-04-11
                                  • 2021-06-26
                                  • 2021-01-04
                                  • 2021-02-28
                                  • 2019-03-29
                                  • 2019-02-27
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多