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 

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

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

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

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


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

php artisan key:generate


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

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

 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 

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

 'cipher' => MCRYPT_RIJNDAEL_128, 

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

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

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

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

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

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

PHP-ключ: генерировать

Мне удалось решить развертывание для работы сервера 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 / общедоступную папку как дома:

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

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

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

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

 php artisan config:cache 

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

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

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

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

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

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

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

 'key' = env('someRandom36CharsString'), 

в

 'key' = 'someRandom36CharsString',