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

时间:2016-09-26 00:53:54

标签: configuration installation laravel-5.3

我使用composer安装了一个新的laravel 5.3副本,但我一直收到这个错误:

  

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

14 个答案:

答案 0 :(得分:80)

您需要在appication文件夹中包含 .env ,然后运行:

$ php artisan key:generate

如果您没有从 .env.example 获取 .env 副本:

$ cp .env.example .env

答案 1 :(得分:19)

在终端上运行此命令:

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

答案 2 :(得分:15)

运行php artisan key:generate

执行php artisan config:clear

然后php artisan config:cache

事情会开始奏效!

答案 3 :(得分:8)

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

cd to/your/project/dir

再次发出此命令:

composer update

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

php artisan key:generate

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

答案 4 :(得分:6)

好的,这基本上已经得到了解答,但是我发现了一些被警告或便秘的警告,其中一个......

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

$ cp .env.example .env

然后,生成应用程序密钥

$ php artisan key:generate

完成此操作后,请务必打开.env文件并确保APP_KEY行看起来正确 - 这是我惊愕的地方:

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

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

希望这个答案能帮助那些可能遇到同样问题或烦恼的人。

答案 5 :(得分:5)

请按照以下步骤操作:

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

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

第3步:运行php artisan config:cache

它将解决所有问题。

答案 6 :(得分:4)

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

php artisan key:generate
php artisan config:cache

完成。

答案 7 :(得分:1)

.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变量。我的应用程序设置了APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E密码,所以我给了它32个字符的密钥 就像err一样,之后一切正常。

答案 8 :(得分:1)

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

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

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

答案 9 :(得分:1)

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

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

答案 10 :(得分:1)

对于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

希望这会有所帮助。

答案 11 :(得分: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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

如果您使用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项目时,您可以看到创建密钥的日志,如下所示:

  

生成自动加载文件

     
    

照亮\基金会\ ComposerScripts :: postUpdate     php artisan optimize生成优化的类加载器已删除已编译的服务文件。     php artisan key:生成应用程序密钥[base64:exxxxxxxxxxxxxxxxxxxxxxxxxxxxxx / k =]设置成功。

  

默认情况下,config / app.php中的密钥配置如下,它使用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',

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

你也可以参考这个github issue