【问题标题】:The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths. laravel 5.3唯一受支持的密码是具有正确密钥长度的 AES-128-CBC 和 AES-256-CBC。拉拉维尔 5.3
【发布时间】:2017-02-03 05:38:19
【问题描述】:

我使用 composer 安装了 Laravel 5.3 的新副本,但出现此错误:

唯一受支持的密码是 AES-128-CBC 和 AES-256-CBC 正确的密钥长度。即使我在配置目录中的 app.php 文件指定
'密码' => 'AES-128-CBC'

【问题讨论】:

  • 参考这个github [issue][1]。
  • 我遇到了这个问题,而且它完全是随机的......我的 90% 的请求都没有任何错误,然后我在日志中得到一个 HTTP 500。
  • 如果是全新安装,则使用以下命令在公共目录中创建 storage 的符号链接:php artisan storage:link

标签: laravel-5 configuration installation


【解决方案1】:

您需要在您的应用程序文件夹中有 .env 然后运行:

$ php artisan key:generate

如果您没有从 .env.example 复制的 .env

$ cp .env.example .env

【讨论】:

  • 我在全新安装时也遇到了这个问题。我已经运行了密钥生成器,清除并重新缓存。我检查了.env文件,密钥插入成功,但错误仍然存​​在。
  • @Rottingham,在您的 config/app.php 中,您有什么“密钥”和“密码”?
  • 我有相同的 AES-256-CBC 作为密码,密钥是 env('APP_KEY');我发现我的问题是 key:generate 是在 .env 文件中连接它们而不是替换它。
  • @CodeCanyon 您是否尝试过按照stackoverflow.com/a/40709643/1008916 的建议检查密钥长度?
  • “只需运行这些命令”不是一个很好的答案。虽然它可以解决问题,但它不能更深入地了解正在做什么。它也没有回答这些值在生产服务器、开发服务器和工作站上是否应该相同。
【解决方案2】:

运行php artisan key:generate

php artisan config:clear

然后php artisan config:cache

一切都会开始工作的!

【讨论】:

  • 我试了还是不行,还是和之前一样的错误。
  • 如此完整的完整示例
【解决方案3】:

在你的终端上运行这个命令:

php 工匠配置:清除
然后
php 工匠配置:缓存

【讨论】:

  • 就像 P.S.或仅供参考 - 运行 config:cache 会自动运行 config:clear ,正如您在运行 config:cache 时在终端中看到的那样
  • 我有一个 .env 文件和一个 APP_KEY 值,这适用于我的情况。谢谢。
【解决方案4】:

只需从 .env 文件中删除 APP_KEY 值并再次运行此命令:

php artisan key:generate
php artisan config:cache

完成。

【讨论】:

    【解决方案5】:

    好的,这基本上已经得到了回答,但我发现了一些令人惊恐或便秘的警告,这两个中的一个......

    首先,正如已经说过的,你应该确保你有一个有效的.env文件,你可以通过复制现有的.env.example文件在终端中完成:

    $ cp .env.example .env

    然后,生成你的应用密钥

    $ php artisan key:generate

    完成此操作后,请确保打开您的 .env 文件并确保 APP_KEY 行看起来正确 - 这就是我惊愕的原因:

    APP_KEY=base64:MsUJo+qAhIVGPx52r1mbxCYn5YbWtCx8FQ7pTaHEvRo=base64:Ign7MpdXw4FMI5ai7SXXiU2vbraqhyEK1NniKPNJKGY=

    您会注意到密钥长度是错误的,它出于某种未知原因(可能来自多次运行 key:generate)有两个 base64= 密钥。删除一个是解决我遇到的问题的方法,这似乎是一个 Artisan/Laravel 错误。

    希望这个答案可以帮助任何可能遇到同样问题或烦人的错误的人。

    【讨论】:

    • 我也面临这个问题,但它只是偶尔弹出。密钥是正确的,所以我认为还有其他问题。我已经完成了 Lee 建议的配置缓存,并将看看它是如何进行的。作为参考,我在文件中有一大堆其他访问令牌,因此其中一个可能会导致问题。但是,如果是的话,我希望它每次都会发生。 (L5.4)
    • 这个,加上php artisan config:clear 然后php artisan config:cache,修复了我的安装。
    • @MikeRockétt 这里有讨论:github.com/laravel/framework/issues/9080 关于多个 ajax 调用同时拉动 app_key 和 .env 文件从第一次调用被锁定。推荐的解决方法是不在生产环境中调用 .env 而是使用缓存?
    • 就是这样!为我固定。我有两把钥匙!删除一个并工作:)
    【解决方案6】:

    如果您是第一次在该机器上运行 Laravel 项目,请确保您拥有必要的 requirements。 在您的项目目录中打开您的 CMD/Terminal 或

    cd to/your/project/dir
    

    再次给出这个命令:

    composer update
    

    将您的.env.example 更改为.env 并在该文件中进行必要的更改,尤其是数据库配置以避免数据库错误。 那么

    php artisan key:generate
    

    每次我创建 Laravel 项目或从 git 克隆它时,这都解决了这个 AES 密码密钥长度问题。

    【讨论】:

      【解决方案7】:

      按照以下步骤操作:

      第 1 步:确保您的应用程序中有 .env 文件。如果没有运行此命令 cp .env.example .env

      第 2 步:现在运行以下命令 (php artisan key:generate) 生成密钥,它会自动保存在 .env 文件中。

      第 3 步:如果要缓存配置,请运行 php artisan config:cachephp artisan config:clear

      希望它能解决所有问题。

      【讨论】:

        【解决方案8】:

        .env 文件中输入这个密钥,你就完成了

        APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E
        

        还是不行?

        如果您使用 cli 工作,请重新启动服务器,它会自动运行。

        想要解释吗?

        好的,正如错误消息所说:

        唯一受支持的密码是 AES-128-CBC 和 AES-256-CBC 正确的密钥长度。

        AES-128-CBC 的密钥长度为 16 个字符,例如 ABCDEF123ERD456E

        AES-256-CBC 的密钥长度为 32 个字符,例如 ABCDEF123ERD456EABCDEF123ERD456E

        确保在config/app.php 中将cipher 设置为与上述两个类似的适当密码,并且密钥指向.env 文件APP_KEY 变量。我的应用程序有 AES-256-CBC 密码集,所以我给了它 32 个字符的密钥 比如APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E,之后一切正常。

        【讨论】:

          【解决方案9】:

          如果 APP_KEY 未设置,请检查您的 .env 文件,这是问题所在, 现在运行php artisan key:generate 然后运行php artisan config:cache

          它将在您的 .env 文件中设置一个 APP_KEY 键。

          如果 APP_KEY 已设置,则运行相同的命令。它将更新此密钥。

          【讨论】:

            【解决方案10】:

            适用于 laravel 5.4 PHP 7.4

            1. 解决运行此命令

            php artisan key:generate

            这将在您的.env 文件中为APP_KEY= 设置一个值

            类似这样的:APP_KEY=base64:trp5LQ9/TW85+17o0T7F0bZ/Ca1J9cIMgvyNIYl0k/g=

            1. 使用以下命令清理缓存以使一切恢复正常:

            php artisan config:clear

            那么 php artisan config:cache

            希望这会有所帮助。

            【讨论】:

              【解决方案11】:

              我也有这个问题。 我使用echo $APP_KEY 检查“APP_KEY”的环境变量值 对我来说,它是为另一个流明项目设置的“流明”,这就是它不起作用的原因。

              我使用export APP_KEY=[you app_key value from .env file] 更新了“APP_KEY”值并清除了缓存php artisan config:cache,它对我有用。

              【讨论】:

                【解决方案12】:

                要检查的另一件事是您的 .env 文件是否在 www-data 组(或 httpd 或任何您的 Web 服务器组)中,并且该组具有读取权限。

                在 linux 上,当我收到此错误时,我的权限如下所示: -rw-rw-r-- 1 kevin kevin 618 Mar 16 09:32 .env 然后我只是删除了所有人的读取权限并删除了组的写入权限。 chmod 640 .env 然后我将组更改为 www-data chown kevin:www-data .env 我的权限现在如下所示: -rw-r----- 1 kevin www-data 516 Mar 16 09:35 .env

                【讨论】:

                  【解决方案13】:

                  如果 artisan 命令不起作用并且您在命令行中遇到相同的错误,这意味着 composer 没有做好获取所有文件的工作,您应该删除 vendor 文件夹并再次运行 composer update .

                  【讨论】:

                    【解决方案14】:

                    如果您使用 composer create-project --prefer-dist laravel/laravel market 之类的命令新创建一个 laravel 项目,并使用 cp 命令将新的 repo 部署到应用程序路径,您可能会遇到此问题。

                    我使用 laravel 5.4

                    roofe@www:~/market$ php artisan --version
                    Laravel Framework 5.4.33
                    

                    当您创建 laravel 项目时,您可以看到创建密钥的日志如下:

                    生成自动加载文件

                    Illuminate\Foundation\ComposerScripts::postUpdate php artisan optimize 生成优化的类加载器 已编译的服务文件已被删除。 php artisan key:generate Application key [base64:exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/k=]设置成功。

                    config/app.php中的key配置默认如下,使用AES-256-CBC,创建项目时生成的key存放在.env文件中。如果您使用cp -r ./* /var/www/market/ 之类的命令,.env 文件将不会移动到应用程序路径。

                    /*
                    |--------------------------------------------------------------------------
                    | Encryption Key
                    |--------------------------------------------------------------------------
                    |
                    | This key is used by the Illuminate encrypter service and should be set
                    | to a random, 32 character string, otherwise these encrypted strings
                    | will not be safe. Please do this before deploying an application!
                    |
                    */
                    
                    'key' => env('APP_KEY'),
                    
                    'cipher' => 'AES-256-CBC',
                    

                    当我将部署命令更改为 cp -r ./* ./.env /var/www/market/ 时,这个问题就消失了。

                    你也可以参考这个githubissue

                    【讨论】:

                      猜你喜欢
                      • 2020-02-02
                      • 2017-05-23
                      • 2017-11-17
                      • 2017-11-21
                      • 1970-01-01
                      • 2021-05-11
                      • 2013-08-11
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多