laravel Не найден поддерживаемый шифровальщик. Шифр и/или длина ключа недопустимы
Я создаю проект с использованием Laravel. Он отлично работал на локальном хосте, но когда я загружаю его на сервер (на сервере установлен 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
Может ли кто-нибудь помочь устранить эту ошибку?
14 answers
Установлены ли у вас на сервере все необходимые расширения?
- PHP>=5.5.9
- Расширение PHP OpenSSL
- Расширение PDO PHP
- Расширение Mbstring PHP
- Расширение PHP для токенизатора
Возможно, вам не хватает расширения OpenSSL. Кроме того, у вас есть набор ключей в файле .env
?
Попробуйте запустить:
php artisan key:generate
Ответ: 'cipher' => ''
не был установлен.
Вы вводите только в консоли:
php artisan key:generate
И если ваш app.php не меняйте этот ключ, меняйте вручную.
Далее, если вы вдруг получите это сообщение об ошибке:
[Исключение ошибки]
file_get_contents(/путь/к/моему/проекту/.env): не удалось открыть поток: Нет такого файла или каталога
Затем сделайте копию файла .env.example
и повторите попытку:
cp .env.example .env
php artisan key:generate
У меня была такая же проблема раньше, и я исправил ее следующим образом:
Перейти к config/app.php,
измените "cipher" => "anything"
на
'cipher' => MCRYPT_RIJNDAEL_128,
Я просто исправляю ошибку.
-
Shift+Click
щелкните правой кнопкой мыши, чтобы "открыть окно похвалы здесь" из вашего корневого проекта. - В консоли напишите:
"php artisan key:generate"
. - Получить 32-символьную "метку" в
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-мастера: сгенерировать
Я исправил это, выполнив следующее:
php artisan config:cache
Мне удалось решить задачу развертывания на живом сервере Ubuntu, вот все шаги
Убедитесь, что PHP>=5.5.9
Убедитесь, что установлены OpenSSL, Mbstring, токенизатор и 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>
Для меня главное, что FTP может не копировать скрытые файлы по умолчанию:
.env
и /public/.htaccess
должны быть там!
После выполняя вышеперечисленные задачи, он работал на сервере Ubuntu
Если вы используете app.php файл конфигурации вместо чтения ключа из файла .env, затем вы можете удалить функцию env() для переменной ключа, например:
'key' = env('someRandom36CharsString'),
До
'key' = 'someRandom36CharsString',
Я страдал от этой проблемы в течение нескольких слишком многих часов, прежде чем обнаружил, что ключ кэшируется в 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.
Пожалуйста, убедитесь, что у вас есть эти требования в вашей машине.
- PHP>=5.6.4
- Расширение PHP OpenSSL
- Расширение PDO PHP
- Расширение Mbstring PHP
- Расширение PHP для токенизатора
- Расширение XML PHP
Затем после установки или обновления вашего проекта с помощью
Обновление композитора
После этого у вас есть --
. env. пример
Создайте дубликат и переименуйте его в--
.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. Весь этот шаг делает это с любой опасностью.