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


78

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

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


请参阅此github [issue] [1]。
Kris Roofe '17

我有这个问题,它是完全随机的... 90%的请求都通过而没有任何错误,然后我在日志中得到一个HTTP 500。
亚历山大·马提尼

如果是全新安装,则使用以下命令在公共目录中创建存储的符号链接:php artisan storage:link
user3314639

Answers:


112

您需要在您的appication文件夹上具有.env,然后运行:

$ php artisan key:generate

如果你没有.ENV从复制.env.example

$ cp .env.example .env

1
我在全新安装上也遇到了这个确切的问题。我已经运行了密钥生成器,将其清除并重新缓存。我检查了.env文件,密钥已成功插入,但错误仍然存​​在。
Rottingham

@Rottingham,在您的config / app.php中,您有什么作为“密钥”和“密码”?
Mugoma J. Okomba '16

2
我的密码与AES-256-CBC相同,密钥为env('APP_KEY'); 我发现我的问题是关键:generate将它们串联在.env文件中,而不是替换它。
Rottingham

1
@CodeCanyon您是否尝试过检查stackoverflow.com/a/40709643/1008916建议的密钥长度?
Mugoma J. Okomba,

1
“仅运行这些命令”不是一个很好的答案。尽管它可以解决问题,但它并不能更深入地了解正在执行的操作。它也无法回答在生产服务器,开发服务器与工作站上这些值是否应该相同。
S. Imp


22

在终端上运行以下命令:

php artisan config:clear
然后 清除
php artisan config:cache


2
就像PS或FYI一样-运行config:cache会自动运行config:clear,就像您在运行config:cache时在终端中看到的那样
Rottingham

我有一个.env文件和一个APP_KEY值,这种情况对我而言有效。谢谢。
2013年

9

好的,这基本上已经得到了回答,但是我发现了一些警告,它们已经被这两种方法中的一种或者是便秘...

首先,正如已经说过的那样,您应该确保您有一个有效的.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)
MikeRockétt17年

1
这样做,php artisan config:clear然后php artisan config:cache修复了我的安装。
zundi

@MikeRockétt这里有讨论:github.com/laravel/framework/issues/9080, 涉及到多个ajax调用同时拉出app_key和.env文件被从第一次调用锁定的问题。推荐的解决方法是不在生产环境中调用.env,而是使用缓存?
nwolybug

9

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

cd to/your/project/dir

再次输入以下命令:

composer update

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

php artisan key:generate

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


9

跟着这些步骤:

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

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

步骤3:php artisan config:cache如果要缓存配置,请运行或php artisan config:clear

希望它将解决所有问题。


7

.env文件中提供此密钥,您就完成了

APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E

还是行不通?

如果您在cli上工作,请重新启动服务器,它将重新启动。

需要解释吗?

好的,因为错误消息显示:

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

密钥长度为AES-128-CBC16个字符,例如ABCDEF123ERD456E

密钥长度为AES-256-CBC32个字符,例如ABCDEF123ERD456EABCDEF123ERD456E

确保像上面的两个一样将中config/app.phpcipher设置为适当的密码,并且密钥指向.env文件 APP_KEY变量。我的应用程序AES-256-CBC设置了密码,因此我给了它32个字符的密钥APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E,之后一切正常。


4

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

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

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



1

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

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


0

要检查的另一件事是您的.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


0

如果artisan命令不起作用,并且您在命令行中遇到相同的错误,则意味着作曲家在获取所有文件方面做得不好,您应该删除供应商文件夹并composer update再次运行。


0

如果您使用像这样的命令新创建一个laravel项目,composer create-project --prefer-dist laravel/laravel market然后使用cp命令将新的仓库部署到应用程序路径中,则可能会遇到此问题。

我使用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:生成应用程序密钥[base64:exxxxxxxxxxxxxxxxxxxxxxxxxxx / k =]已成功设置。

默认情况下,config / app.php中的密钥config如下所示,它使用AES-256-CBC并且在创建项目时将生成的密钥存储在.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',

在将我的deploy命令更改为时cp -r ./* ./.env /var/www/market/,此问题消失了。

您也可以参考此github问题


0

对于laravel 5.4版PHP 7.4

  1. 要解决运行此命令

php artisan key:generate

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

像这样的东西: APP_KEY=base64:trp5LQ9/TW85+17o0T7F0bZ/Ca1J9cIMgvyNIYl0k/g=

  1. 使用以下命令清理缓存以使所有内容重新工作:

php artisan config:clear

然后 php artisan config:cache

希望这可以帮助。

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.