Die einzigen unterstützten Chiffren sind AES-128-CBC und AES-256-CBC mit den richtigen Schlüssellängen. Laravel 5.3

78

Ich habe mit Composer eine neue neue Version von Laravel 5.3 installiert, erhalte jedoch folgende Fehlermeldung:

Die einzigen unterstützten Chiffren sind AES-128-CBC und AES-256-CBC mit den richtigen Schlüssellängen. Obwohl meine app.php-Datei im Konfigurationsverzeichnis
'cipher' => 'AES-128-CBC' angibt

Emmanuel Mariki
quelle
Siehe diesen Github [Ausgabe] [1].
Kris Roofe
Ich habe dieses Problem und es ist völlig zufällig ... 90% meiner Anfragen gehen ohne Fehler durch, dann bekomme ich einen HTTP 500 mit diesem in den Protokollen.
Alexandre Martini
Wenn es sich um eine Neuinstallation handelt, erstellen Sie den Symlink für die Speicherung im öffentlichen Verzeichnis mit dem folgenden Befehl: php
artisan

Antworten:

112

Sie müssen .env in Ihrem Anwendungsordner haben und dann Folgendes ausführen:

$ php artisan key:generate

Wenn Sie keine .env- Kopie von .env.example haben :

$ cp .env.example .env
Mugoma J. Okomba
quelle
1
Ich habe auch genau dieses Problem bei einer Neuinstallation. Ich habe den Schlüsselgenerator ausgeführt, gelöscht und erneut zwischengespeichert. Ich habe die .env-Datei überprüft und der Schlüssel wurde erfolgreich eingefügt, aber der Fehler bleibt bestehen.
Rottingham
@Rottingham, was hast du in deiner config / app.php als 'Schlüssel' und 'Chiffre'?
Mugoma J. Okomba
2
Ich hatte das gleiche, AES-256-CBC wie der Ciper, und der KEY war env ('APP_KEY'); Ich entdeckte, dass mein Problem der Schlüssel war: generate verkettete den Schlüssel in der .envDatei, anstatt sie zu ersetzen.
Rottingham
1
@CodeCanyon Haben Sie versucht, die Schlüssellänge zu überprüfen, wie von stackoverflow.com/a/40709643/1008916 vorgeschlagen ?
Mugoma J. Okomba
1
"Führen Sie einfach diese Befehle aus" ist keine sehr gute Antwort. Während es das Problem lösen kann, bietet es kein tieferes Verständnis dafür, was genau getan wird. Es wird auch nicht beantwortet, ob diese Werte auf einem Produktionsserver im Vergleich zu einem Entwicklungsserver gegenüber der eigenen Workstation gleich sein sollten.
S. Imp
35

Ausführen php artisan key:generate.

Tun Sie php artisan config:clear,

Dann php artisan config:cache

Und die Dinge werden anfangen zu funktionieren!

Cengkuru Michael
quelle
1
Ich habe es versucht und es funktioniert immer noch nicht, der gleiche Fehler wird wie zuvor angezeigt.
Schwarz
22

Führen Sie die folgenden Befehle auf Ihrem Terminal aus:

PHP Artisan Config: Löschen Sie
dann
PHP Artisan Config: Cache

Lee
quelle
2
Genau wie ein PS- oder FYI-laufender config: cache automatisch config: clear ausführt, wie Sie im Terminal sehen, wenn config: cache ausgeführt wird
Rottingham
Ich hatte eine .env-Datei und einen APP_KEY-Wert, dies funktioniert in meinem Fall. Vielen Dank.
Setar
9

Ok, das wurde im Grunde schon beantwortet, aber ich fand ein paar Vorbehalte, die einen dieser beiden bestürzt oder verstopft hatten ...

Zunächst sollten Sie, wie bereits gesagt, sicherstellen, dass Sie über eine gültige .envDatei verfügen, die Sie im Terminal erstellen können, indem Sie die vorhandene .env.exampleDatei als solche kopieren :

$ cp .env.example .env

Generieren Sie dann Ihren Anwendungsschlüssel

$ php artisan key:generate

Sobald dies erledigt ist, stellen Sie sicher, dass Sie Ihre .env-Datei öffnen und sicherstellen, dass die Zeile APP_KEY korrekt aussieht - daher kam meine Bestürzung:

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

Sie werden feststellen, dass die Schlüssellänge falsch ist. Aus einem unbekannten Grund (wahrscheinlich durch Ausführen des Schlüssels: mehrfach generieren) sind zwei base64=Schlüssel enthalten. Das Entfernen eines ist die Lösung für die Probleme, die ich hatte, und dies scheint ein Artisan / Laravel-Fehler zu sein.

Hoffe, diese Antwort hilft jedem, der mit den gleichen Problemen oder nervigen Fehlern zu kämpfen hat.

Rottingham
quelle
Ich stehe auch vor diesem Problem, aber es taucht nur ab und zu auf. Der Schlüssel ist korrekt, daher gehe ich davon aus, dass ein anderes Problem vorliegt. Ich habe das von Lee vorgeschlagene Konfigurations-Caching durchgeführt und werde sehen, wie es geht. Als Referenz habe ich eine ganze Reihe von anderen Zugriffstoken in der Datei, so einer von ihnen könnte ein Problem verursacht werden. Wenn dies jedoch der Fall wäre, würde ich erwarten, dass dies jedes Mal geschieht. (L5.4)
Mike Rockétt
1
Dies und das, was ich php artisan config:cleardann tat php artisan config:cache, reparierte meine Installation.
Zundi
@ MikeRockétt Hier gibt es eine Diskussion: github.com/laravel/framework/issues/9080 über mehrere Ajax-Aufrufe, bei denen gleichzeitig der app_key gezogen wird und die .env-Datei vom ersten Aufruf an gesperrt wird. Empfohlener Fix ist, die .env nicht in der Produktion aufzurufen, sondern den Cache zu verwenden?
Nwolybug
9

Wenn Sie zum ersten Mal ein Laravel-Projekt auf diesem Computer ausführen, stellen Sie sicher, dass Sie die erforderlichen Anforderungen haben . Öffnen Sie Ihr CMD / Terminal in Ihrem Projektverzeichnis oder

cd to/your/project/dir

Geben Sie diesen Befehl erneut ein:

composer update

Ändern Sie Ihre .env.examplein .envund nehmen Sie die erforderlichen Änderungen in dieser Datei vor, insbesondere in den Datenbankkonfigurationen, um Datenbankfehler zu vermeiden. Dann

php artisan key:generate

Dies löst dieses Problem mit der Länge des AES-Chiffrierschlüssels jedes Mal, wenn ich ein Laravel-Projekt erstelle oder es aus git klone.

Ashfak Md Shibli
quelle
9

Folge diesen Schritten:

Schritt 1: Stellen Sie sicher, dass Ihre Anwendung eine ENV-Datei enthält. Wenn Sie diesen Befehl nicht ausführen cp .env.example .env

Schritt 2: Führen Sie nun den folgenden Befehl ( php artisan key:generate) aus, um einen Schlüssel zu generieren, der automatisch in der ENV-Datei gespeichert wird.

Schritt 3: Führen php artisan config:cacheSie aus, wenn Sie die Konfiguration zwischenspeichern möchtenphp artisan config:clear

Hoffentlich wird es alles reparieren.

PHP Wurm ...
quelle
7

In der .envDatei geben Sie diesen Schlüssel und Sie sind fertig

APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E

Funktioniert immer noch nicht?

Wenn Sie mit cli arbeiten, starten Sie den Server neu.

Willst du eine Erklärung?

ok, wie die Fehlermeldung sagt:

Die einzigen unterstützten Chiffren sind AES-128-CBC und AES-256-CBC mit den richtigen Schlüssellängen.

Die Schlüssellänge für AES-128-CBCbeträgt 16 Zeichen, z. B. ABCDEF123ERD456E

Die Schlüssellänge für AES-256-CBCbeträgt 32 Zeichen, z. B. ABCDEF123ERD456EABCDEF123ERD456E

Achten Sie darauf , in config/app.phpder cipheroben auf die entsprechende Chiffre wie die zwei gesetzt ist und der Schlüssel zum verweist .envDatei APP_KEYvariabel. Meine App hat den AES-256-CBCChiffresatz, also habe ich ihm den 32-Zeichen-Schlüssel gegeben APP_KEY=ABCDEF123ERD456EABCDEF123ERD456Eund danach hat alles gut funktioniert.

f_i
quelle
4

Überprüfen Sie Ihre .env-Datei, wenn APP_KEY nicht festgelegt ist. Dies ist das Problem. Jetzt ausführen und php artisan key:generate dann ausführenphp artisan config:cache

Es wird ein APP_KEY- Schlüssel in Ihrer .env-Datei festgelegt.

Wenn APP_KEY bereits festgelegt ist, führen Sie dieselben Befehle aus. Dieser Schlüssel wird aktualisiert.

Imad Ullah
quelle
2

Entfernen Sie einfach den APP_KEY-Wert aus der ENV-Datei und führen Sie die folgenden Befehle erneut aus:

php artisan key:generate
php artisan config:cache

Erledigt.

Amir Kaftari
quelle
1

Ich hatte auch dieses Problem. Ich überprüfe meinen Umgebungsvariablenwert für "APP_KEY" mit echo $APP_KEY Für mich war es "Lumen", das für ein anderes Lumenprojekt festgelegt wurde, und deshalb funktionierte es nicht.

Ich habe den Wert "APP_KEY" mithilfe des export APP_KEY=[you app_key value from .env file]Caches aktualisiert und gelöscht, php artisan config:cacheund es hat bei mir funktioniert.

Rakesh Sadaka
quelle
0

Eine andere Sache, die Sie nur überprüfen müssen, ist, dass sich Ihre .env-Datei in der www-Datengruppe befindet (oder httpd oder was auch immer Ihre Webservergruppe ist) und dass die Gruppe Leseberechtigung hat.

Unter Linux sahen meine Berechtigungen so aus, als ich diesen Fehler bekam: -rw-rw-r-- 1 kevin kevin 618 Mar 16 09:32 .env Ich habe dann nur die Leseberechtigung für alle und die Schreibberechtigung für die Gruppe entfernt. chmod 640 .env Dann habe ich die Gruppe in www-data geändert. chown kevin:www-data .env Meine Berechtigungen sehen jetzt so aus: -rw-r----- 1 kevin www-data 516 Mar 16 09:35 .env

Kevin van Zyl
quelle
0

Wenn der handwerkliche Befehl nicht funktioniert und Sie den gleichen Fehler in der Befehlszeile erhalten, bedeutet dies, dass Composer beim Abrufen aller Dateien keine gute Arbeit geleistet hat. Sie sollten den Herstellerordner löschen und composer updateerneut ausführen .


quelle
0

Wenn Sie ein Laravel-Projekt mit dem Befehl like neu erstellen composer create-project --prefer-dist laravel/laravel marketund das neue Repo mit dem Befehl cp im Anwendungspfad bereitstellen, tritt möglicherweise dieses Problem auf.

Ich benutze Laravel 5.4

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

Wenn Sie das Laravel-Projekt erstellen, sehen Sie die Protokolle, die den Schlüssel erstellen, wie folgt:

Autoload-Dateien generieren

Illuminate \ Foundation \ ComposerScripts :: postUpdate php artisan optimize Generieren eines optimierten Klassenladeprogramms Die kompilierte Servicedatei wurde entfernt. PHP Artisan Key: Generieren Sie den Anwendungsschlüssel [base64: exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx / k =] erfolgreich gesetzt.

Standardmäßig lautet AES-256-CBCdie Schlüsselkonfiguration in der .envDatei config / app.php wie folgt: Sie wird verwendet und der beim Erstellen des Projekts generierte Schlüssel wird in der Datei gespeichert . Wenn Sie einen Befehl wie diesen verwenden, wird cp -r ./* /var/www/market/die .envDatei nicht in den Anwendungspfad verschoben.

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

Wenn ich meinen Bereitstellungsbefehl auf ändere cp -r ./* ./.env /var/www/market/, ist dieses Problem behoben .

Sie können sich auch auf dieses Github- Problem beziehen .

Kris Roofe
quelle
0

Für Laravel Version 5.4 PHP 7.4

  1. Führen Sie diesen Befehl aus , um das Problem zu lösen

php artisan key:generate

Dadurch wird ein Wert für APP_KEY=in Ihrer .envDatei festgelegt

etwas wie das: APP_KEY=base64:trp5LQ9/TW85+17o0T7F0bZ/Ca1J9cIMgvyNIYl0k/g=

  1. Bereinigen Sie den Cache, damit mit den folgenden Befehlen alles wieder funktioniert:

php artisan config:clear

dann php artisan config:cache

Hoffe das hilft.

Oscar David
quelle