我使用composer安装了一个新的laravel 5.3副本,但我一直收到这个错误:
唯一受支持的密码是AES-128-CBC和AES-256-CBC 正确的密钥长度。即使我在config目录中的app.php文件指定了
'cipher'=> 'AES-128-CBC',
答案 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版本
php artisan key:generate
这将为您的APP_KEY=
文件中的.env
设置一个值
类似这样的内容:APP_KEY=base64:trp5LQ9/TW85+17o0T7F0bZ/Ca1J9cIMgvyNIYl0k/g=
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。