Laravel Нет поддерживаемого encrypter. Недопустимые значения шифрования и/или ключа

Я строил проект, используя Laravel. Он работал нормально на localhost, но когда я загружаю его на сервер (на сервере установлен 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

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

Ответ 1

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

  • PHP >= 5.5.9
  • Расширение PHP OpenSSL
  • Расширение PDO PHP
  • Расширение PHP Mbstring
  • Расширение PHP для Tokenizer

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


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

php artisan key:generate


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

Ответ 2

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

php artisan key:generate

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


Далее, если вам нужно получить это сообщение об ошибке:

[ErrorException]
  file_get_contents (/path/to/my/project/.env): не удалось открыть поток: нет такого файла или каталога

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

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

Ответ 3

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

'cipher' => MCRYPT_RIJNDAEL_128,

Ответ 4

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

  • Shift+Click щелкните правой кнопкой мыши, чтобы "открыть окно commend здесь" из вашего корневого проекта.
  • В консоли пишите: "php artisan key:generate".
  • Получить 32 символа "Отметить" до config/app.php как 'key' => env('APP_KEY', 'insert get 32 char key'),//номер строки 81

Ответ 5

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

Ответ 6

В моем случае мне нужно включить расширение 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

Ответ 7

записать в консоль 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

Ответ 8

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

php artisan key: generate

Ответ 9

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

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

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

Установить mcrypt в PHP (Ubuntu):

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

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

chmod -R 0777 storage

Сделать Apache использовать папку Lavarel/public как home:

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

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

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

Ответ 10

Я исправил это, выполнив это:

php artisan config:cache

Ответ 11

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

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

Ответ 12

Добавьте "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.

Ответ 13

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

  • PHP >= 5.6.4
  • Расширение PHP OpenSSL
  • Расширение PDO PHP
  • Расширение PHP Mbstring
  • Расширение PHP для Tokenizer
  • Расширение XML PHP

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

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

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

.env.example

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

.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 artisan key: generate

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

Ответ 14

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

'key' = env('someRandom36CharsString'),

to

'key' = 'someRandom36CharsString',