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',