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',
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
Exécutez cette commande sur votre terminal:
php artisan config: clear
puis
php artisan config: cache
Exécutez php artisan key:generate
.
Faire php artisan config:clear
,
Alors php artisan config:cache
Et les choses vont commencer à fonctionner!
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.
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.
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.
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.
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é.
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 .
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
.
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