web-dev-qa-db-fra.com

laravel Aucun chiffreur pris en charge trouvé. Le chiffre et/ou la longueur de la clé sont invalides

Je construis un projet en utilisant Laravel. Cela fonctionnait bien sur localhost, mais lorsque je le télécharge sur le serveur (le serveur a COMODO ssl installé), je reçois le message d'erreur suivant:

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

Quelqu'un peut-il aider à résoudre cette erreur?

69
Rahman za

Avez-vous toutes les extensions nécessaires installées sur le serveur?

  • PHP> = 5.5.9 
  • OpenSSL PHP Extension 
  • PDO PHP Extension 
  • Mbstring PHP Extension 
  • Tokenizer PHP Extension

Il se peut que vous manquiez l'extension OpenSSL. De plus, avez-vous la clé définie dans le fichier .env?


Essayez de courir: 

php artisan key:generate


Réponse: le 'cipher' => '' n'a pas été défini.

58
Salkz

Vous ne tapez que dans la console:

php artisan key:generate

Et si votre app.php ne change pas cette clé, changez-le manuellement.


Suivant si vous deviez arriver à ce message d'erreur:

[ErreurException]
file_get_contents (/path/to/my/project/.env): échec de l'ouverture du flux: aucun fichier ou répertoire de ce type

Ensuite, faites une copie du fichier .env.example et essayez à nouveau:

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

J'ai le même problème avant et je l'ai corrigé comme suit: Aller à config/app.php, Changer "cipher" => "anything" à 

'cipher' => MCRYPT_RIJNDAEL_128,
9
Vuong Tran

Je viens de corriger l'erreur. 

  1. Shift+Click clic droit pour "ouvrir la fenêtre de recommandation ici" à partir de votre projet racine. 
  2. Dans la console, écrivez: "php artisan key:generate"
  3. Obtenez 32 caractères 'Mark' à config/app.php comme 'key' => env('APP_KEY', 'insert get 32 char key'), // numéro de ligne 81
7
dkbn90

Je l'ai corrigé en lançant ceci: 

php artisan config:cache
6
Rowayda Khayri

Dans le répertoire racine, s'il existe un fichier .env.example, remplacez-le par .env puis exécutez php artisan key:generate. Cela a fonctionné pour moi.

5
Tirth Patel

Dans mon cas, je dois activer l'extension mcrypt.

Mais d'abord, vérifiez si vous l'avez déjà:

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

Vérifiez si le module mcrypt est chargé:

$ php -m | grep mcrypt

si rien ne s'affiche, c'est parce que n'est pas chargé, mais vous avez déjà installé ci-dessus, non? Alors faites ceci:

$ php5enmod mcrypt
$ Sudo service Apache2 restart

Vérifiez à nouveau et vous devriez voir mcrypt au lieu de rien. C'est un bon signe, rechargez votre application et corrigez votre prochaine erreur;)

$ php -m | grep mcrypt
mcrypt
4
Lucas Serafim

écrire dans la console php artisan key:generate

vous recevrez un message comme: Application key [get 32 char key] set successfully.

remplace la clé de l'application dans config/app.php comme 'key' => env('APP_KEY', 'insert get 32 char key'),//line number 81

4
Md Shahadat Hossain

résolu avec:

clé artisan php: générer

4
Plugue

si vous utilisez le fichier de configuration app.php au lieu de lire la clé à partir du fichier .env, vous pouvez supprimer la fonction env () de la variable clé, par exemple:

'key' = env('someRandom36CharsString'),

à 

'key' = 'someRandom36CharsString',
3
rüff0

J'ai réussi à résoudre le déploiement pour vivre serveur Ubuntu, voici toutes les étapes

Assurez-vous que PHP> = 5.5.9

Assurez-vous que OpenSSL, Mbstring, Tokenizer et mcrypt sont installés.

Pour installer mcrypt dans PHP (Ubuntu):

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

Rendre le dossier de stockage en écriture:

chmod -R 0777 storage

Assurez-Apache utiliser le dossier Lavarel/public comme maison:

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

Le problème majeur pour moi est que FTP ne peut pas copier les fichiers cachés par défaut: .env et /public/.htaccess doivent être présents!

Après avoir terminé les tâches ci-dessus, cela fonctionnait sur le serveur Ubuntu

2
John Wylie

Je souffrais de ce problème depuis trop longtemps avant de découvrir que la clé était mise en cache dans le fichier bootstrap\cache\config.php. Supprimé le fichier et mon site chargé très bien (c'est-à-dire qu'il y avait autrement non problème avec ma config).

J'ai découvert cela en ajoutant des sorties de débogage à boostrap\cache\compiled.php pour le faire cracher le chiffrement et la clé (quelque part autour de la ligne 7010). Puis fouillé pour voir comment il récupérait la configuration et découvrit qu’il utilise un fichier de configuration en cache.

1
Ciaran

Assurez-vous d’avoir cette conditions requises dans votre machine.

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

Ensuite, après l’installation ou la mise à jour de votre projet par

mise à jour du compositeur

Après cela, vous avez--

.env.example

Faites une copie et renommez-la en-- 

.env

et apportez des modifications en fonction de la configuration de votre base de données ou de toute autre modification nécessaire.

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

Enfin, générez votre clé d'application by--

clé artisan php: générer

Pour quelqu'un peut être que la dernière étape suffit. Mais j'ai ce problème chaque fois que je clone un projet Laravel. Toute cette étape rend cela avec n'importe quel danger. 

0

Ajoutez "illuminate/html": "~5.0" pour exiger une section de votre fichier composer.json. Juste comme ça:

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

Puis exécutez la commande composer install. Lorsque composer install est terminé. lancez php artisan key:generate. Vous recevrez un message comme celui-ci:

Application key [get 32 char key] set successfully.
0
Ilyas karim