laravel — RuntimeException в строке EncryptionServiceProvider.php 29: не поддерживается поддерживаемый шифратор. Длина шифра и / или ключа неверна

ПОЖАЛУЙСТА, НЕ ДУМАЙТЕ О ДУБЛИКАТЕ.

Я посмотрел примерно каждый второй пост об этой ошибке, и ни один из них не работал. Я использую Heroku, чтобы выдвинуть, и немного назад это работало отлично.
Я сделал ключ: сгенерировать с 256, используя ‘cipher’ => ‘AES-256-CBC’.
Он работает нормально в localhost, но не в Heroku после того, как я его нажму.
Я пробовал каждое решение, я должен что-то упустить, это расстраивает. Что я не понимаю, так это то, что даже если я генерирую ключ, но все же …
Пожалуйста, помогите мне найти способ исправить эту ошибку.
Кроме того, это то, что я получаю как вывод ошибки:

    in EncryptionServiceProvider.php line 29
at EncryptionServiceProvider->Illuminate\Encryption\{closure}(object(Application), array()) in Container.php line 734
at Container->build(object(Closure), array()) in Container.php line 627
at Container->make('encrypter', array()) in Application.php line 674
at Application->make('encrypter') in Container.php line 838
at Container->resolveClass(object(ReflectionParameter)) in Container.php line 801
at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 770
at Container->build('Illuminate\Cookie\Middleware\EncryptCookies', array()) in Container.php line 627
at Container->make('Illuminate\Cookie\Middleware\EncryptCookies', array()) in Application.php line 674


at Application->make('Illuminate\Cookie\Middleware\EncryptCookies') in Pipeline.php line 123
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
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 102
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 53
Thanks

-1

Решение

Вы можете попробовать запустить

 php artisan key:generate

в клиенте и замените APP_KEY в файле .env, используя сгенерированный ключ.введите описание изображения здесь

3

Другие решения

Наиболее вероятная причина заключается в том, что между вашим локальным компьютером и Heroku установлены разные библиотеки шифрования. Есть 2 аналогичные базовые библиотеки шифрования, openssl и mcrypt. Возможно, что один из них установлен на вашем локальном компьютере, а другой на Heroku. Между ними есть несколько различий, наиболее очевидным является то, что библиотека mcrypt имеет режимы шифрования Rijndael, но openssl имеет AES. Эти два функционально эквивалентны, но имеют разные имена.

Я бы порекомендовал вам использовать openssl вместо mcrypt, так как он поддерживается совсем недавно.

php -m покажет, какие модули установлены.

Предполагая, что у вас установлен openssl, вы должны использовать режим AES-256-CBC и вам понадобится 32-символьный ключ (256 бит), не больше, не меньше.

0

По вопросам рекламы [email protected]