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.example
en 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.
Shift+Click
met de rechtermuisknop om het “aanbevelingsvenster hier te openen” vanuit uw hoofdproject.- Schrijf in console:
"php artisan key:generate"
. - Verkrijg 32 karakters ‘Mark’ naar
config/app.php
zoals'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.example
is, verander het dan in .env
en voer dan php artisan key:generate
uit . 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.php
zoals '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:
.env
en /public/.htaccess
moeten 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.
- PHP >= 5.6.4
- OpenSSL PHP-extensie
- PDO PHP-extensie
- Mbstring PHP-extensie
- Tokenizer PHP-extensie
- 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 install
uit. Wanneer de composer install
is voltooid. voer php artisan key:generate
uit. 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.php
wijzigen 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:generate
is de eenvoudigste oplossing.
nieuwe versies
'cipher' => 'AES-256-CBC',
oude versies
'cipher' => 'AES-128-CBC',