Laravel Kein unterstützter Verschlüsseler gefunden. Die Verschlüsselung und / oder Schlüssellänge sind ungültig

82

Ich baue ein Projekt mit Laravel. Auf localhost hat es einwandfrei funktioniert, aber wenn ich es auf den Server hochlade (auf dem Server ist comodo ssl installiert), wird folgende Fehlermeldung angezeigt:

RuntimeException in EncryptionServiceProvider.php line 29:
No supported encrypter found. The cipher and / or key length are invalid
in EncryptionServiceProvider.php line 29
at EncryptionServiceProvider->Illuminate\Encryption\{closure}(object(Application), array()) in Container.php line 733
at Container->build(object(Closure), array()) in Container.php line 626
at Container->make('encrypter', array()) in Application.php line 674
at Application->make('Illuminate\Contracts\Encryption\Encrypter') in Container.php line 837
at Container->resolveClass(object(ReflectionParameter)) in Container.php line 800
at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 771
at Container->build('SahraSalon\Http\Middleware\EncryptCookies', array()) in Container.php line 626
at Container->make('SahraSalon\Http\Middleware\EncryptCookies', array()) in Application.php line 674
at Application->make('SahraSalon\Http\Middleware\EncryptCookies') in Pipeline.php line 123
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 118
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 86
at Kernel->handle(object(Request)) in index.php line 54

Kann jemand helfen, diesen Fehler zu beheben?

Rahman za
quelle
Ich habe auch dieses Problem jetzt, schlimmeres stackoverflow.com/questions/37505809/…
udemethegrtman

Antworten:

74

Haben Sie alle erforderlichen Erweiterungen auf dem Server installiert?

  • PHP> = 5.5.9
  • OpenSSL PHP-Erweiterung
  • PDO PHP-Erweiterung
  • Mbstring PHP-Erweiterung
  • Tokenizer PHP-Erweiterung

Möglicherweise fehlt Ihnen die OpenSSL-Erweiterung. Haben Sie auch den Schlüssel in der .envDatei festgelegt?


Versuchen Sie zu laufen:

php artisan key:generate


Antwort: das 'cipher' => ''wurde nicht eingestellt.

Salkz
quelle
.env Wert: APP_ENV = local APP_DEBUG = true APP_KEY = zK7sr9SzegGEDFClzJDs0vAkpO8NvjZA DB_HOST = localhost DB_DATABASE = Heimstätte DB_USERNAME = Heimstätte DB_PASSWORD = secret CACHE_DRIVER = Datei SESSION_DRIVER = Datei QUEUE_DRIVER = sync MAIL_DRIVER = smtp MAIL_HOST = mailtrap.io MAIL_PORT = 2525 MAIL_USERNAME = null MAIL_PASSWORD = null MAIL_ENCRYPTION = null
Rahman za
2
Ist dein 'cipher' => 'AES-256-CBC'inconfig/app.php
Salkz
33
Und ausführen php artisan key:generate, um einen neuen Schlüssel zu generieren.
Salkz
@Rahmanza Ich habe all diese Erweiterungen, habe meinen Verschlüsselungstyp geändert und php artisan key:generateversucht, das Problem zu beheben, aber es bleibt bestehen. Könnten meine Routen etwas damit zu tun haben: `` `Route :: group (['Middleware' => ['Web']], function () {Route :: get ('/ login', 'PublicController @ login' ); Route :: post ('/ login', 'AuthenticationController @ login'); Route :: group (['Präfix' => 'admin', 'Middleware' => 'auth'], function () {route: : get ('dashboard', function () {echo 'in dash';});});}); `` `
Tom Bird
95

Sie geben nur die Konsole ein:

php artisan key:generate

Und wenn Ihre app.php diesen Schlüssel nicht ändert, ändern Sie ihn manuell.


Weiter, wenn Sie dann zufällig diese Fehlermeldung erhalten sollten:

[ErrorException]
file_get_contents (/path/to/my/project/.env): Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Erstellen Sie dann eine Kopie der .env.exampleDatei und versuchen Sie es erneut:

cp .env.example .env
php artisan key:generate
Onavascuez
quelle
2
Und überprüfen Sie, ob Sie alle erforderlichen Erweiterungen installiert haben.
Rafael Bugajewski
2
vor dem Kopieren von .env.beispiel nach .env
Alex
9

Ich habe das gleiche Problem zuvor und habe es folgendermaßen behoben: Gehen Sie zu config / app.php und wechseln Sie "cipher" => "anything"zu

'cipher' => MCRYPT_RIJNDAEL_128,
Vuong Tran
quelle
Der Standardwert ist 'cipher' => 'AES-256-CBC',aber dies sollte ohne Anführungszeichen sein !! Seltsam.
Webinan
Das hat mir auch geholfen, ich hatte nicht AES-256-CBCin der Liste der unterstützten Chiffren, wie sich herausstelltephpinfo()
Yuriy Dyachkov
8

Ich habe es behoben, indem ich Folgendes ausgeführt habe:

php artisan config:cache
Rowayda Khayri
quelle
In meinem Fall habe ich Deployer zum ersten Mal verwendet. Als ich das Projekt mit dem Ordner / current verknüpfte, wurde der Verschlüsselungsfehler angezeigt. Durch das Erstellen der Cache-Datei wurde das Problem behoben.
Thomas_inckx
7

Ich behebe nur den Fehler.

  1. Shift+Click Klicken Sie mit der rechten Maustaste auf "Empfehlungsfenster hier öffnen" aus Ihrem Root-Projekt.
  2. In der Konsole schreiben: "php artisan key:generate" .
  3. Holen Sie sich 32 Zeichen 'Mark' zu config/app.phpmögen 'key' => env('APP_KEY', 'insert get 32 char key'), // Zeilennummer 81
dkbn90
quelle
5

Wenn im Stammverzeichnis eine .env.exampleDatei vorhanden ist , ändern Sie diese in .envund führen Sie sie aus php artisan key:generate. Das hat bei mir funktioniert.

Tirth Patel
quelle
4

In meinem Fall muss ich die mcrypt-Erweiterung aktivieren.

Aber überprüfen Sie zuerst, ob Sie es bereits haben:

$ sudo apt-get install -y mcrypt php5-mcrypt

Überprüfen Sie, ob das mcrypt-Modul geladen ist:

$ php -m | grep mcrypt

wenn nichts angezeigt wird, liegt das daran, dass es nicht geladen ist, aber Sie bereits oben richtig installiert haben? Also mach das:

$ php5enmod mcrypt
$ sudo service apache2 restart

Überprüfen Sie erneut, und Sie sollten mcrypt anstelle von nichts sehen. Das ist ein gutes Zeichen, lade deine App neu und behebe deinen nächsten Fehler;)

$ php -m | grep mcrypt
mcrypt
Lucas Serafim
quelle
4

Schreiben Sie in die Konsole php artisan key:generate

Sie erhalten eine Nachricht wie: Application key [get 32 char key] set successfully.

App-Schlüssel in config/app.phplike ersetzen'key' => env('APP_KEY', 'insert get 32 char key'),//line number 81

Md Shahadat Hossain
quelle
Entschuldigung, ich verwende WAMP, aber ich weiß nicht, wo sich die config/app.phpDatei befindet. Könnten Sie es mich wissen lassen?
Julian Moreno
1
zuerst, Sie gehen Sie project folderin wamp serverund Sie dann finden configOrdner dann werden Sie erhalten app.php. Vielen Dank
Md Shahadat Hossain
4

gelöst mit:

PHP Artisan Key: generieren

Plugue
quelle
3

Wenn Sie die Konfigurationsdatei app.php verwenden, anstatt den Schlüssel aus der ENV-Datei zu lesen, können Sie die Funktion env () für die Schlüsselvariable entfernen, z.

'key' = env('someRandom36CharsString'),

zu

'key' = 'someRandom36CharsString',
rüff0
quelle
2

Ich habe es geschafft, die Bereitstellung auf einem Live-Ubuntu-Server zu lösen. Hier sind alle Schritte

Stellen Sie sicher, dass PHP> = 5.5.9

Stellen Sie sicher, dass OpenSSL, Mbstring, Tokenizer und mcrypt installiert sind.

So installieren Sie mcrypt in PHP (Ubuntu):

sudo apt-get install php5-mcrypt,
sudo php5enmod mcrypt

Speicherordner beschreibbar machen:

chmod -R 0777 storage

Lassen Sie Apache den Ordner Lavarel / public als Startseite verwenden:

DocumentRoot /home/code2/public_html/Laravel-Project/public
    <Directory "/home/code2/public_html/Laravel-Project/public”> 
         AllowOverride all 
    </Directory>

Das Wichtigste für mich ist, dass FTP möglicherweise nicht standardmäßig versteckte Dateien kopiert: .envund /public/.htaccessdort sein muss!

Nach Abschluss der oben genannten Aufgaben funktionierte es auf dem Ubuntu-Server

John Wylie
quelle
1

Ich hatte einige zu viele Stunden mit diesem Problem zu kämpfen, bevor ich feststellte, dass der Schlüssel in der Datei bootstrap \ cache \ config.php zwischengespeichert wurde. Löschte die Datei und meine Website wurde einwandfrei geladen (dh es gab sonst keine Problem mit meiner Konfiguration).

Ich entdeckte dies, indem ich eine Boost-Ausgabe zu boostrap \ cache \ compiled.php hinzufügte, damit es die Chiffre und den Schlüssel ausspuckte (irgendwo in Zeile 7010). Dann haben Sie sich umgesehen, um zu sehen, wie die Konfiguration aufgenommen wurde, und festgestellt, dass eine Cache-Konfigurationsdatei verwendet wird.

Ciaran
quelle
1

Bitte stellen Sie sicher, dass Sie diese Anforderungen in Ihrem Gerät haben.

  1. PHP> = 5.6.4
  2. OpenSSL PHP-Erweiterung
  3. PDO PHP-Erweiterung
  4. Mbstring PHP-Erweiterung
  5. Tokenizer PHP-Erweiterung
  6. XML PHP-Erweiterung

Dann nach der Installation oder Aktualisierung Ihres Projekts durch

Komponisten-Update

Danach haben Sie ...

.env.beispiel

Machen Sie ein Duplikat und benennen Sie es um in ...

.env

und nehmen Sie Änderungen entsprechend Ihrer Datenbankkonfiguration oder anderen erforderlichen Änderungen vor.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your db name
DB_USERNAME=username if any otherwise root
DB_PASSWORD= your password if not set leave blank

Generieren Sie schließlich Ihren Anwendungsschlüssel, indem Sie

PHP Artisan Key: generieren

Für jemanden ist vielleicht nur der letzte Schritt genug. Aber ich habe dieses Problem jedes Mal, wenn ich ein Laravel-Projekt klone. Dieser ganze Schritt macht dies mit jeder Gefahr.

Ashfak Md Shibli
quelle
0

Hinzufügen, "illuminate/html": "~5.0"um einen Abschnitt Ihrer composer.jsonDatei zu benötigen . Genau wie dieser:

...
"require": {
    ...
    "illuminate/html": "~5.0"
    ...
},
...

Führen Sie dann den composer installBefehl aus. Wann composer installwird fertig. laufen php artisan key:generate. Sie erhalten eine Nachricht wie folgt:

Application key [get 32 char key] set successfully.
Ilyas Karim
quelle