it-roy-ru.com

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

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

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

69
Rahman za

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

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

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


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

php artisan key:generate


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

58
Salkz

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

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
93
onavascuez

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

'cipher' => MCRYPT_RIJNDAEL_128,
9
Vuong Tran

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

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

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

php artisan config:cache
6
Rowayda Khayri

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

5
Tirth Patel

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

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

решено с помощью:

ключ ремесленника php: генерировать

4
Plugue

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

'key' = env('someRandom36CharsString'),

в 

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

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

2
John Wylie

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

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

1
Ciaran

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

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

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

0
Ashfak Md Shibli

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