Ich baue ein Projekt mit Laravel. Auf localhost funktionierte es einwandfrei, aber wenn ich es auf den Server hochlade (der Server hat comodo ssl installiert), erhalte ich die folgende Fehlermeldung:
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?
Haben Sie alle erforderlichen Erweiterungen auf dem Server installiert?
Möglicherweise fehlt Ihnen die OpenSSL-Erweiterung. Haben Sie auch den Schlüssel in .env
Datei gesetzt?
Laufen Sie mal:
php artisan key:generate
Antwort: Der 'cipher' => ''
wurde nicht gesetzt.
Sie geben nur die Konsole ein:
php artisan key:generate
Und wenn Ihre app.php diesen Schlüssel nicht ändert, ändern Sie sie manuell.
Nächste, wenn Sie dann diese Fehlermeldung erhalten sollten:
[ErrorException]
file_get_contents (/path/to/my/project/.env): Stream konnte nicht geöffnet werden: Keine solche Datei oder Verzeichnis
Erstellen Sie dann eine Kopie der .env.example
-Datei und versuchen Sie es erneut:
cp .env.example .env
php artisan key:generate
Ich habe das gleiche Problem schon einmal und es wurde behoben, dass es folgendermaßen funktioniert: Gehen Sie zu config/app.php, "cipher" => "anything"
ändern in
'cipher' => MCRYPT_RIJNDAEL_128,
Ich korrigiere nur den Fehler.
Shift+Click
rechte Maustaste zum "Öffnen des Kommendenfensters hier" aus Ihrem Stammprojekt. "php artisan key:generate"
. config/app.php
wie 'key' => env('APP_KEY', 'insert get 32 char key')
, // Zeilennummer 81Ich habe es behoben, indem ich Folgendes ausgeführt habe:
php artisan config:cache
Wenn sich im Stammverzeichnis eine .env.example
-Datei befindet, ändern Sie sie in .env
und führen Sie dann php artisan key:generate
aus. Das hat bei mir funktioniert.
In meinem Fall muss ich die mcrypt-Erweiterung aktivieren.
Aber überprüfe zuerst, ob du es schon hast:
$ Sudo apt-get install -y mcrypt php5-mcrypt
Prüfen Sie, ob das mcrypt-Modul geladen ist:
$ php -m | grep mcrypt
wenn nichts angezeigt wird, ist denn nicht geladen, aber hast du oben schon richtig installiert? Also mach das:
$ php5enmod mcrypt
$ Sudo service Apache2 restart
Überprüfen Sie noch einmal und Sie sollten mcrypt statt nichts sehen. Das ist ein gutes Zeichen, laden Sie Ihre App neu und beheben Sie Ihren nächsten Fehler;)
$ php -m | grep mcrypt
mcrypt
schreibe in die Konsole php artisan key:generate
sie erhalten eine Nachricht wie: Application key [get 32 char key] set successfully.
ersetzen Sie den App-Schlüssel in config/app.php
wie 'key' => env('APP_KEY', 'insert get 32 char key'),//line number 81
gelöst mit:
pHP Handwerker Schlüssel: generieren
wenn Sie die Konfigurationsdatei app.php verwenden, anstatt den Schlüssel aus der .env-Datei zu lesen, können Sie die env () - Funktion für die Schlüsselvariable entfernen, z.
'key' = env('someRandom36CharsString'),
zu
'key' = 'someRandom36CharsString',
Ich habe es geschafft, die Bereitstellung für 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
Lass 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>
Eine wichtige Angelegenheit für mich ist, dass FTP versteckte Dateien standardmäßig nicht kopiert: .env
und /public/.htaccess
müssen dabei sein!
Nach Abschluss der oben genannten Aufgaben funktionierte es auf dem Ubuntu-Server
Ich hatte einige Stunden mit diesem Problem zu kämpfen, bevor ich entdeckte, dass der Schlüssel in der Bootstrap\cache\config.php zwischengespeichert wurde. Die Datei wurde gelöscht und meine Seite wurde gut geladen (d. H. Sonst gab es keine Probleme mit meiner Konfiguration).
Ich entdeckte dies, indem ich einige debug-Ausgaben zu boostrap\cache\compiled.php hinzufügte, um die Chiffre und den Schlüssel ausspucken zu lassen (irgendwo in der Zeile 7010). Dann suchte er herum, um zu sehen, wie er die config aufnahm und fand, dass er eine Cache-Konfigurationsdatei verwendet.
Stellen Sie sicher, dass Sie diese Anforderungen in Ihrer Maschine haben.
Dann nach der Installation oder Aktualisierung Ihres Projekts durch
komponist Update
Danach haben Sie--
Beispiel
Machen Sie ein Duplikat und benennen Sie es in-- um
.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
Schließlich generieren Sie Ihren Anwendungsschlüssel durch--
pHP Handwerker Schlüssel: generieren
Für Jemand mag nur der letzte Schritt ausreichen. Aber ich habe dieses Problem jedes Mal, wenn ich ein Laravel-Projekt klone. Dieser ganze Schritt macht dies mit jeder Gefahr.
Fügen Sie "illuminate/html": "~5.0"
hinzu, um einen Abschnitt Ihrer composer.json
-Datei anzufordern. Genau wie dieser:
...
"require": {
...
"illuminate/html": "~5.0"
...
},
...
Führen Sie dann den Befehl composer install
aus. Wenn composer install
abgeschlossen ist. php artisan key:generate
ausführen. Sie erhalten eine Nachricht wie diese:
Application key [get 32 char key] set successfully.