我使用composer安装了Laravel 5.3的新副本,但出现此错误:
唯一受支持的密码是具有正确密钥长度的AES-128-CBC和AES-256-CBC。即使我在配置目录中的app.php文件指定了
'cipher'=>'AES-128-CBC'
我使用composer安装了Laravel 5.3的新副本,但出现此错误:
唯一受支持的密码是具有正确密钥长度的AES-128-CBC和AES-256-CBC。即使我在配置目录中的app.php文件指定了
'cipher'=>'AES-128-CBC'
Answers:
您需要在您的appication文件夹上具有.env,然后运行:
$ php artisan key:generate
如果你没有.ENV从复制.env.example:
$ cp .env.example .env
.env
文件中,而不是替换它。
运行php artisan key:generate
。
做php artisan config:clear
,
然后 php artisan config:cache
一切都会开始!
在终端上运行以下命令:
php artisan config:clear
然后
清除
php artisan config:cache
好的,这基本上已经得到了回答,但是我发现了一些警告,它们已经被这两种方法中的一种或者是便秘...
首先,正如已经说过的那样,您应该确保您有一个有效的.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错误。
希望此答案对任何可能遇到相同问题或令人讨厌的错误的人有所帮助。
php artisan config:clear
然后php artisan config:cache
修复了我的安装。
如果您是第一次在该机器上运行Laravel项目,请确保您具有必要的要求。在项目目录中打开您的CMD /终端,或
cd to/your/project/dir
再次输入以下命令:
composer update
更改.env.example
为,.env
并在该文件中进行必要的更改,尤其是数据库配置,以避免db错误。然后
php artisan key:generate
每当我创建一个Laravel项目或从git克隆它时,这便解决了AES密码密钥长度问题。
在.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
,之后一切正常。
检查您的.env文件是否未设置APP_KEY,这是问题所在,现在运行, php artisan key:generate
然后运行php artisan config:cache
它将在您的.env文件中设置一个APP_KEY密钥。
如果已设置APP_KEY,请运行相同的命令。它将更新此密钥。
只需从.env文件中删除APP_KEY值,然后再次运行以下命令:
php artisan key:generate
php artisan config:cache
做完了
我也有这个问题。我使用来检查我的环境变量值“ APP_KEY”echo $APP_KEY
对我来说是为另一个流明项目设置的“流明”,这就是为什么它不起作用的原因。
我使用export APP_KEY=[you app_key value from .env file]
并清除了缓存更新了“ APP_KEY”值php artisan config:cache
,它对我有用。
要检查的另一件事是您的.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
如果artisan命令不起作用,并且您在命令行中遇到相同的错误,则意味着作曲家在获取所有文件方面做得不好,您应该删除供应商文件夹并composer update
再次运行。
如果您使用像这样的命令新创建一个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问题。