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?
Avez-vous toutes les extensions nécessaires installées sur le serveur?
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.
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
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,
Je viens de corriger l'erreur.
Shift+Click
clic droit pour "ouvrir la fenêtre de recommandation ici" à partir de votre projet racine. "php artisan key:generate"
. config/app.php
comme 'key' => env('APP_KEY', 'insert get 32 char key')
, // numéro de ligne 81Je l'ai corrigé en lançant ceci:
php artisan config:cache
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.
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
é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
résolu avec:
clé artisan php: générer
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',
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
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.
Assurez-vous d’avoir cette conditions requises dans votre machine.
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.
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.