web-dev-qa-db-fra.com

Les seuls chiffrements pris en charge sont AES-128-CBC et AES-256-CBC avec les longueurs de clé correctes. Laravel 5.3

J'ai installé une nouvelle copie de laravel 5.3 en utilisant composer, mais je continue à avoir cette erreur:

Les seuls chiffrements pris en charge sont AES-128-CBC et AES-256-CBC avec le corriger les longueurs de clé. Même si mon fichier app.php dans le répertoire config spécifie
'cipher' => 'AES-128-CBC',

47
Emmanuel Mariki

Vous devez avoir .env sur votre dossier d’application puis exécuter:

$ php artisan key:generate

Si vous n'avez pas .env copy from .env.example :

$ cp .env.example .env
75
Mugoma J. Okomba

Exécutez cette commande sur votre terminal: 

php artisan config: clear
puis
php artisan config: cache

18
Lee

Exécutez php artisan key:generate

Faire php artisan config:clear

Alors php artisan config:cache

Et les choses vont commencer à fonctionner!

12
Cengkuru Michael

Si vous exécutez un projet Laravel pour la première fois sur cette machine, assurez-vous de disposer de la configuration requise . Ouvrez votre CMD/Terminal dans votre répertoire de projet 

cd to/your/project/dir

Donner à nouveau cette commande:

composer update

Changez votre .env.example en .env et apportez les modifications nécessaires à ce fichier, en particulier aux configurations de la base de données, afin d'éviter les erreurs de base de données . 

php artisan key:generate

Cela résout ce problème de longueur de clé de chiffrement AES chaque fois que je crée un projet Laravel ou que je le clone à partir de git.

8

Ok, on a déjà répondu à cette question, mais j’ai trouvé quelques mises en garde qui avaient été consternées, ou constipées, l’une de ces deux ...

Tout d’abord, comme cela a déjà été dit, vous devez vous assurer que vous disposez d’un fichier .env valide que vous pouvez utiliser dans le terminal en copiant le fichier .env.example existant en tant que tel:

$ cp .env.example .env

Ensuite, générez votre clé d'application 

$ php artisan key:generate

Ceci fait, assurez-vous d’ouvrir votre fichier .env et de vous assurer que la ligne APP_KEY est correcte - c’est de là que vient ma consternation:

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

Vous remarquerez que la longueur de la clé est erronée. Pour une raison inconnue (probablement du fait de l'exécution de la clé: générer plusieurs fois), elle contient deux clés base64=. En supprimer un est la solution aux problèmes que je rencontrais et cela semble être un bogue Artisan/Laravel.

J'espère que cette réponse aidera tous ceux qui peuvent être aux prises avec les mêmes problèmes ou avec un bug gênant.

6
Rottingham

Suivez ces étapes:

Étape 1: Assurez-vous d’avoir le fichier .env dans votre application. Si vous n’exécutez pas cette commande cp .env.example .env

Étape 2: Maintenant, exécutez la commande suivante (php artisan key:generate) pour générer une clé qui sera automatiquement enregistrée dans un fichier .env.

Étape 3: Exécutez php artisan config:cache

Ça va tout réparer.

4
PHP Worm...

dans le fichier .env donnez cette clé et vous avez terminé

APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E

Ne fonctionne toujours pas? 

Si vous travaillez à partir de cli, redémarrez le serveur et ce sera le cas.

Vous voulez une explication?

ok, comme dit le message d'erreur:

Les seuls chiffrements pris en charge sont AES-128-CBC et AES-256-CBC avec le corriger les longueurs de clé.

La longueur de la clé pour AES-128-CBC est de 16 caractères, par exemple ABCDEF123ERD456E.

La longueur de la clé pour AES-256-CBC est de 32 caractères, par exemple ABCDEF123ERD456EABCDEF123ERD456E.

Assurez-vous que dans config/app.php la cipher est définie sur le chiffre approprié, comme les deux précédents, et que la clé pointe vers la variable .env file APP_KEY. Mon application a le code AES-256-CBC défini, alors je lui ai donné la clé de 32 caractères like APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E et tout a bien fonctionné par la suite.

1
Faiz Khan

Vérifiez votre fichier .env si APP_KEY n'est pas défini, c'est le problème, exécutez maintenant php artisan key:generate puis exécutez php artisan config:cache

il définira une clé APP_KEY dans votre fichier .env.

Si APP_KEY est déjà défini, exécutez les mêmes commandes. Il mettra à jour cette clé.

0
Imad Ullah

Si vous venez de créer un projet laravel avec une commande telle que composer create-project --prefer-dist laravel/laravel market et que vous déployez le nouveau référentiel sur le chemin d’application avec la commande cp, vous risquez d’avoir ce problème. 

J'utilise laravel 5.4

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

Lorsque vous créez le projet laravel, vous pouvez voir les journaux qui créent la clé comme ceci:

Générer des fichiers à chargement automatique

Illuminate\Foundation\ComposerScripts :: postUpdate php artisan optimise Générer un chargeur de classes optimisé Le fichier de services compilé a été supprimé . clé artisan php: générer la clé d'application [base64: exxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/k =] définie avec succès.

Par défaut, la clé config dans config/app.php est la suivante, elle utilise AES-256-CBC et la clé générée lors de la création du projet est stockée dans le fichier .env. Si vous utilisez une commande telle que cp -r ./* /var/www/market/, le fichier .env ne sera pas déplacé vers le chemin de l'application.

/*
|--------------------------------------------------------------------------
| 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',

Lorsque je modifie ma commande deploy à cp -r ./* ./.env /var/www/market/, le problème est résolu.

Vous pouvez aussi vous référer à ce github issue .

0
Kris Roofe

Si la commande artisan ne fonctionne pas et que vous obtenez la même erreur dans la ligne de commande, cela signifie que composer n'a pas réussi à récupérer tous les fichiers. Vous devez donc supprimer le dossier du fournisseur et réexécuter composer update.

0

Une autre chose à vérifier est que votre fichier .env est dans le groupe www-data (ou httpd ou quel que soit votre groupe de serveurs Web) et que le groupe dispose d'une autorisation de lecture.

Sur Linux, mes permissions ressemblaient à ceci quand j'ai eu cette erreur: -rw-rw-r-- 1 kevin kevin 618 Mar 16 09:32 .env Je viens alors de retirer les droits de lecture pour tous et le droit d'écriture du groupe . chmod 640 .env data chown kevin:www-data .env Mes autorisations ressemblent maintenant à ceci: -rw-r----- 1 kevin www-data 516 Mar 16 09:35 .env

0
Kevin van Zyl