laravel Не найден поддерживаемый шифровальщик. Шифр и/или длина ключа недопустимы


Я создаю проект с использованием Laravel. Он отлично работал на локальном хосте, но когда я загружаю его на сервер (на сервере установлен comodo ssl), я получаю следующую ошибку:

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

Может ли кто-нибудь помочь устранить эту ошибку?

Author: Scott Weldon, 2015-07-20

14 answers

Установлены ли у вас на сервере все необходимые расширения?

  • PHP>=5.5.9
  • Расширение PHP OpenSSL
  • Расширение PDO PHP
  • Расширение Mbstring PHP
  • Расширение PHP для токенизатора

Возможно, вам не хватает расширения OpenSSL. Кроме того, у вас есть набор ключей в файле .env?


Попробуйте запустить:

php artisan key:generate


Ответ: 'cipher' => '' не был установлен.

 55
Author: Salkz, 2017-04-04 10:41:52

Вы вводите только в консоли:

php artisan key:generate

И если ваш app.php не меняйте этот ключ, меняйте вручную.


Далее, если вы вдруг получите это сообщение об ошибке:

[Исключение ошибки]
file_get_contents(/путь/к/моему/проекту/.env): не удалось открыть поток: Нет такого файла или каталога

Затем сделайте копию файла .env.example и повторите попытку:

cp .env.example .env
php artisan key:generate
 92
Author: onavascuez, 2016-09-13 03:31:57

У меня была такая же проблема раньше, и я исправил ее следующим образом: Перейти к config/app.php, измените "cipher" => "anything" на

'cipher' => MCRYPT_RIJNDAEL_128,
 9
Author: Vuong Tran, 2015-11-15 03:53:12

Я просто исправляю ошибку.

  1. Shift+Click щелкните правой кнопкой мыши, чтобы "открыть окно похвалы здесь" из вашего корневого проекта.
  2. В консоли напишите: "php artisan key:generate".
  3. Получить 32-символьную "метку" в config/app.php, как 'key' => env('APP_KEY', 'insert get 32 char key'),//номер строки 81
 7
Author: dkbn90, 2016-02-11 21:54:14

В корневом каталоге, если есть файл .env.example, измените его на .env, а затем запустите php artisan key:generate. Это сработало для меня.

 5
Author: Tirth Patel, 2016-04-30 13:34:37

В моем случае мне нужно включить расширение mcrypt.

Но сначала проверьте, есть ли у вас это:

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

Проверьте, загружен ли модуль mcrypt:

$ php -m | grep mcrypt

Если ничего не отображается, это потому, что не загружено, но вы уже установили выше, верно? Так что сделайте это:

$ php5enmod mcrypt
$ sudo service apache2 restart

Проверьте еще раз, и вы должны увидеть mcrypt вместо ничего. Это хороший знак, перезагрузите приложение и исправьте следующую ошибку;)

$ php -m | grep mcrypt
mcrypt
 4
Author: Lucas Serafim, 2015-07-24 15:54:17

Запись в консоль php artisan key:generate

Вы получите сообщение, подобное: Application key [get 32 char key] set successfully.

Замените ключ приложения в config/app.php как 'key' => env('APP_KEY', 'insert get 32 char key'),//line number 81

 4
Author: Md Shahadat Hossain, 2015-08-25 08:26:41

Решается с помощью:

Ключ Php-мастера: сгенерировать

 4
Author: Plugue, 2016-08-12 18:20:55

Я исправил это, выполнив следующее:

php artisan config:cache
 4
Author: Rowayda Khayri, 2017-09-30 14:56:07

Мне удалось решить задачу развертывания на живом сервере Ubuntu, вот все шаги

Убедитесь, что PHP>=5.5.9

Убедитесь, что установлены OpenSSL, Mbstring, токенизатор и mcrypt.

Для установки mcrypt в PHP (Ubuntu):

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

Сделать папку хранения доступной для записи:

chmod -R 0777 storage

Заставьте Apache использовать общую папку Lavarel/в качестве домашней:

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

Для меня главное, что FTP может не копировать скрытые файлы по умолчанию: .env и /public/.htaccess должны быть там!

После выполняя вышеперечисленные задачи, он работал на сервере Ubuntu

 2
Author: John Wylie, 2015-08-27 19:54:15

Если вы используете app.php файл конфигурации вместо чтения ключа из файла .env, затем вы можете удалить функцию env() для переменной ключа, например:

'key' = env('someRandom36CharsString'),

До

'key' = 'someRandom36CharsString',
 2
Author: rüff0, 2017-11-24 21:09:20

Я страдал от этой проблемы в течение нескольких слишком многих часов, прежде чем обнаружил, что ключ кэшируется в bootstrap\cache\config.php . Удалил файл, и мой сайт загрузился нормально (т.Е. в противном случае не было проблем с моей конфигурацией).

Я обнаружил это, добавив некоторые отладочные выходные данные в boostrap\cache\compiled.php чтобы заставить его выдать шифр и ключ (где-то около строки 7010). Затем покопался, чтобы посмотреть, как он подбирал конфигурацию, и обнаружил, что он использует файл конфигурации кэша.

 1
Author: Ciaran, 2017-02-21 19:04:16

Добавьте "illuminate/html": "~5.0" в раздел "Требуется" вашего файла composer.json. Вот так:

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

Затем выполните команду composer install. Когда composer install будет завершено. запустите php artisan key:generate. Вы получите сообщение, подобное этому:

Application key [get 32 char key] set successfully.
 0
Author: Ilyas karim, 2017-04-03 16:00:40

Пожалуйста, убедитесь, что у вас есть эти требования в вашей машине.

  1. PHP>=5.6.4
  2. Расширение PHP OpenSSL
  3. Расширение PDO PHP
  4. Расширение Mbstring PHP
  5. Расширение PHP для токенизатора
  6. Расширение XML PHP

Затем после установки или обновления вашего проекта с помощью

Обновление композитора

После этого у вас есть --

. env. пример

Создайте дубликат и переименуйте его в--

.env

И внесите изменения в соответствии с конфигурацией вашей базы данных или любыми другими необходимыми изменениями.

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

Наконец, сгенерируйте ключ приложения с помощью --

Ключ Php-мастера: сгенерировать

Для кого-то может быть достаточно только последнего шага. Но у меня возникает эта проблема каждый раз, когда я клонирую любой проект laravel. Весь этот шаг делает это с любой опасностью.

 0
Author: Ashfak Md Shibli, 2017-05-09 03:27:31