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


83

Я создаю проект с использованием 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

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


У меня тоже есть эта проблема, еще хуже
udemethegrtman

Ответы:


77

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

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

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


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

php artisan key:generate


Ответ: 'cipher' => ''не ставился.


.env значение: APP_ENV = локальная APP_DEBUG = True APP_KEY = zK7sr9SzegGEDFClzJDs0vAkpO8NvjZA DB_HOST = локальный DB_DATABASE = приусадебные DB_USERNAME = приусадебные DB_PASSWORD = секрет CACHE_DRIVER = файл SESSION_DRIVER = файл QUEUE_DRIVER = синхронизация MAIL_DRIVER = MAIL_HOST = SMTP mailtrap.io MAIL_PORT = 2525 MAIL_USERNAME = нуль MAIL_PASSWORD = null MAIL_ENCRYPTION = null
Рахман за

2
Is your 'cipher' => 'AES-256-CBC'inconfig/app.php
Salkz

34
И бегите, php artisan key:generateчтобы сгенерировать новый ключ.
Salkz

@Rahmanza У меня есть все эти расширения, я изменил тип шифра и php artisan key:generateпытался решить проблему, но она не исчезла. Могут ли мои маршруты иметь какое-либо отношение к этому: `` `Route :: group (['middleware' => ['web']]], function () {Route :: get ('/ login', 'PublicController @ login' ); Route :: post ('/ login', 'AuthenticationController @ login'); Route :: group (['prefix' => 'admin', 'middleware' => 'auth'], function () {route: : get ('приборная панель', function () {echo 'в тире';});});}); ``
Том Бёрд

95

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

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

2
И проверьте, установлены ли у вас все необходимые расширения.
Рафаэль Бугаевски

2
перед копированием .env.example в .env
Alex

9

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

'cipher' => MCRYPT_RIJNDAEL_128,

значение по умолчанию - 'cipher' => 'AES-256-CBC',но это не должно быть кавычек !! Странный.
Webinan

Мне это тоже помогло, у меня не было AES-256-CBCв списке поддерживаемых шифров, как выяснилосьphpinfo()
Юрий Дьячков

8

Я исправил это, запустив это:

php artisan config:cache

В моем случае я впервые использовал Deployer. Когда я делал символическую ссылку на проект в папку / current, я получил ошибку шифрования. Это исправлено при создании файла кеша.
thomas_inckx

7

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

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

5

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

5

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


4

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


Извините, я использую WAMP, но не знаю, где находится config/app.phpфайл. Не могли бы вы сообщить мне об этом?
Джулиан Морено

1
сначала ты пойдешь ты project folder в , wamp serverа затем вы найдете configпапку , то вы получите app.php. спасибо
Md Shahadat Hossain


3

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

'key' = env('someRandom36CharsString'),

к

'key' = 'someRandom36CharsString',

2

Мне удалось решить развертывание на живом сервере 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 в качестве домашней:

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

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

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


1

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

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


1

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

  1. PHP> = 5.6.4
  2. Расширение OpenSSL PHP
  3. Расширение PDO PHP
  4. Расширение Mbstring PHP
  5. Расширение Tokenizer PHP
  6. Расширение 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: генерировать

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


0

Добавьте "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.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.