laravel Geen ondersteunde encrypter gevonden. Het cijfer en/of de sleutellengte zijn ongeldig

Ik bouw een project met Laravel. Het werkte prima op localhost, maar wanneer ik het upload naar de server (de server heeft comodo ssl geïnstalleerd), krijg ik de volgende foutmelding:

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

Kan iemand deze fout helpen oplossen?


Antwoord 1, autoriteit 100%

Je typt alleen in console:

php artisan key:generate

En als uw app.php deze sleutel niet wijzigt, wijzig deze dan handmatig.


Volgende als u deze foutmelding krijgt:

[Foutuitzondering]
file_get_contents(/path/to/my/project/.env): kan stream niet openen: zo’n bestand of map bestaat niet

Maak vervolgens een kopie van het bestand .env.exampleen probeer het opnieuw:

cp .env.example .env
php artisan key:generate

Antwoord 2, autoriteit 82%

Heeft u alle benodigde extensies op de server geïnstalleerd?

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

Het kan zijn dat u de OpenSSL-extensie mist. Heb je ook de sleutel ingesteld in het .env-bestand?


Probeer te rennen:

php artisan key:generate


Antwoord: de 'cipher' => ''is niet ingesteld.


Antwoord 3, autoriteit 9%

Ik heb eerder hetzelfde probleem gehad en ik heb het als volgt opgelost:
Ga naar config/app.php,
verander "cipher" => "anything"naar

'cipher' => MCRYPT_RIJNDAEL_128,

Antwoord 4, autoriteit 9%

Ik heb het opgelost door dit uit te voeren:

php artisan config:cache

Antwoord 5, autoriteit 7%

Ik herstel alleen de fout.

  1. Shift+Clickmet de rechtermuisknop om het “aanbevelingsvenster hier te openen” vanuit uw hoofdproject.
  2. Schrijf in console: "php artisan key:generate".
  3. Verkrijg 32 karakters ‘Mark’ naar config/app.phpzoals 'key' => env('APP_KEY', 'insert get 32 char key'),//regelnummer 81

Antwoord 6, autoriteit 5%

In mijn geval moet ik de mcrypt-extensie inschakelen.

Maar controleer eerst of je het al hebt:

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

Controleer of de mcrypt-module is geladen:

$ php -m | grep mcrypt

als er niets wordt weergegeven, is omdat het niet is geladen, maar je hebt hierboven toch al geïnstalleerd? Dus doe dit:

$ php5enmod mcrypt
$ sudo service apache2 restart

Controleer opnieuw en je zou mcrypt moeten zien in plaats van niets. Dat is een goed teken, herlaad je app en herstel je volgende fout 😉

$ php -m | grep mcrypt
mcrypt

Antwoord 7, autoriteit 5%

In de hoofdmap, als er een bestand .env.exampleis, verander het dan in .enven voer dan php artisan key:generateuit . Dit werkte voor mij.


Antwoord 8, autoriteit 4%

schrijf in console php artisan key:generate

u krijgt een bericht als: Application key [get 32 char key] set successfully.

vervang de app-sleutel in config/app.phpzoals 'key' => env('APP_KEY', 'insert get 32 char key'),//line number 81


Antwoord 9, autoriteit 4%

opgelost met:

php artisan key:generate


Antwoord 10, autoriteit 3%

als u het app.php-configuratiebestand gebruikt in plaats van de sleutel uit het .env-bestand te lezen, dan kunt u de env()-functie op de sleutelvariabele verwijderen, bijvoorbeeld:

'key' = env('someRandom36CharsString'),

naar

'key' = 'someRandom36CharsString',

Antwoord 11, autoriteit 2%

Het is me gelukt om de implementatie naar een live Ubuntu-server op te lossen, hier zijn alle stappen

Zorg voor PHP >= 5.5.9

Zorg ervoor dat OpenSSL, Mbstring, Tokenizer en mcrypt zijn geïnstalleerd.

Mcrypt installeren in PHP (Ubuntu):

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

Opslagmap beschrijfbaar maken:

chmod -R 0777 storage

Laat Apache de map Lavarel /public als thuis gebruiken:

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

Het belangrijkste probleem voor mij is dat FTP standaard verborgen bestanden niet kopieert:
.enven /public/.htaccessmoeten erbij zijn!

Na het voltooien van de bovenstaande taken werkte het op de Ubuntu-server


Antwoord 12

Ik had een paar uur te veel last van dit probleem voordat ik ontdekte dat de sleutel werd gecached in de bootstrap\cache\config.php. Het bestand verwijderd en mijn site laadde goed (d.w.z. er was anders geenprobleem met mijn configuratie).

Ik ontdekte dit door wat debug-output toe te voegen aan boostrap\cache\compiled.php om het het cijfer en de sleutel te laten uitspugen (ergens rond regel 7010). Toen groef hij rond om te zien hoe het de configuratie oppikte en ontdekte dat het een cacheconfiguratiebestand gebruikt.


Antwoord 13

Zorg ervoor dat u deze vereistenop uw computer heeft.

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

Na installatie of update van uw project door

componist update

Hierna heb je–

.env.voorbeeld

Maak een duplicaat en hernoem het in–

.env

en breng wijzigingen aan volgens uw databaseconfiguratie of andere wijzigingen die u nodig heeft.

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

Genereer ten slotte uw applicatiesleutel door–

php artisan key:generate

Voor iemand kan alleen de laatste stap voldoende zijn. Maar ik heb dit probleem elke keer als ik een laravel-project kloon. Deze hele stap maakt dit met enig gevaar.


Antwoord 14

Voeg "illuminate/html": "~5.0"toe om een ​​sectie van uw composer.json-bestand te vereisen. Gewoon zo:

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

Voer vervolgens de opdracht composer installuit. Wanneer de composer installis voltooid. voer php artisan key:generateuit. U krijgt een bericht als dit:

Application key [get 32 char key] set successfully.

Antwoord 15

In sommige oude versies van laravel moet je de standaardwaarde van cipher in /config/app.phpwijzigen van “AES-256-CBC” in “AES-128-CBC”.

de standaardcodering in conng/app.php is “AES-256-CBC” die een tekenreeks van 32 tekens nodig heeft, en de code “AES-128-CBC” heeft slechts 16 tekens nodig.

Het invoeren van php artisan key:generateis de eenvoudigste oplossing.

nieuwe versies

'cipher' => 'AES-256-CBC',

oude versies

'cipher' => 'AES-128-CBC',

Other episodes