Єдиними підтримуваними шифрами є AES-128-CBC та AES-256-CBC з правильною довжиною ключів. laravel 5.3


82

Я встановив нову свіжу копію Laravel 5.3 за допомогою composer, але я отримую таку помилку:

Єдиними підтримуваними шифрами є AES-128-CBC та AES-256-CBC з правильною довжиною ключів. Незважаючи на те, що мій файл app.php у каталозі конфігурації вказує
'cipher' => 'AES-128-CBC'


Зверніться до цього github [випуск] [1].
LF00,

У мене ця проблема, і це абсолютно випадково ... 90% моїх запитів проходять без помилок, тоді я отримую один HTTP 500 із цим у журналах.
Олександр Мартіні,

Якщо це нова установка, то створіть символічне посилання сховища в загальнодоступному каталозі за допомогою цієї команди: php artisan storage: link
user3314639

Відповіді:


119

Потрібно мати .env у своїй папці додатків, після чого запустити:

$ php artisan key:generate

Якщо у вас немає .env- копії з .env.example :

$ cp .env.example .env

1
У мене також виникає саме ця проблема при новій установці. Я запустив генератор ключів, очистив і пере кешував. Я перевірив файл .env, і ключ було успішно вставлено, але помилка не зникає.
Роттінгем,

@Rottingham, у вашому config / app.php, що ви маєте як "ключ" і "шифр"?
Mugoma J. Okomba

2
У мене був такий самий AES-256-CBC, як у ципера, і КЛЮЧ був env ('APP_KEY'); Я виявив, що моя проблема була ключовою: генерація об'єднувала .envфайл, а не замінювала його.
Роттінгем

1
@CodeCanyon ви пробували перевірити довжину ключа, як запропонував stackoverflow.com/a/40709643/1008916 ?
Mugoma J. Okomba

1
"Просто запустити ці команди" - не дуже хороша відповідь. Хоча це може вирішити проблему, воно не дає глибшого розуміння того, що саме робиться. Також не відповідає, чи мають ці значення однакові на виробничому сервері та на сервері розробки та на робочій станції.
S. Imp

39

Біжи php artisan key:generate.

Робіть php artisan config:clear,

Тоді php artisan config:cache

І все почне працювати!


1
Я спробував, але він все ще не працює, відображається така ж помилка, як і раніше.
Чорний

22

Запустіть на своєму терміналі такі команди:

php artisan config: очистити,
потім
php artisan config: cache


2
Так само, як PS або FYI - запущений config: cache автоматично запускає config: clear, як ви бачите в терміналі під час запуску config: cache
Роттингем

У мене був файл .env та значення APP_KEY, це працює в моєму випадку. Дякую.
Сетар

10

Добре, на це в основному вже було дано відповідь, але я знайшов кілька застережень, які були спотворені, або запором, одним із цих двох ...

По-перше, як уже було сказано, ви повинні переконатися, що у вас є дійсний .envфайл, який ви можете створити в терміналі, скопіювавши існуючий .env.exampleфайл як такий:

$ cp .env.example .env

Потім згенеруйте ключ програми

$ php artisan key:generate

Після цього переконайтеся, що відкрили файл .env, і переконайтеся, що рядок APP_KEY виглядає правильно - ось звідки з’явився мій здивування:

APP_KEY=base64:MsUJo+qAhIVGPx52r1mbxCYn5YbWtCx8FQ7pTaHEvRo=base64:Ign7MpdXw4FMI5ai7SXXiU2vbraqhyEK1NniKPNJKGY=

Ви помітите, що довжина ключа неправильна, у неї з якоїсь невідомої причини (можливо, від запущеного ключа: генерувати кілька разів) є два base64=ключі. Видалення одного - це вирішення проблем, які у мене виникали, і це, схоже, помилка Artisan / Laravel.

Сподіваюся, ця відповідь допоможе кожному, хто може боротися з тими ж проблемами чи надокучливою помилкою.


Я також стикаюся з цим питанням, але воно з’являється лише час від часу. Ключ правильний, тому я припускаю, що відбувається якась інша проблема. Я зробив кешування конфігурації, запропонований Лі, і побачу, як це буде. Для довідки, у мене є ціла купа інших маркерів доступу у файлі, тому один із них може спричинити проблему. Однак, якби вони були, я би очікував, що це відбуватиметься кожного разу. (L5.4)
Майк Рокетт,

1
Це плюс плюс php artisan config:clearтоді php artisan config:cacheвиправило мою установку.
зунді

@ MikeRockétt Тут обговорюється: github.com/laravel/framework/issues/9080 щодо декількох викликів ajax, які одночасно витягують app_key та файл .env, який блокується від першого дзвінка. Рекомендоване виправлення полягає в тому, щоб не викликати .env у виробництві, а використовувати кеш?
nwolybug

9

Якщо ви вперше запускаєте проект Laravel на цій машині, переконайтеся, що у вас є необхідні вимоги . Відкрийте CMD / термінал у каталозі проекту або

cd to/your/project/dir

Дайте ще раз цю команду:

composer update

ЗМІНИТИ СВОЮ .env.exampleдо .envі внести необхідні зміни в цьому файлі конфігурації бази даних , особливо , щоб уникнути дб помилки. Тоді

php artisan key:generate

Це вирішує цю проблему довжини ключа шифру AES кожного разу, коли я створюю проект Laravel або клоную його з git.


9

Дотримуйтесь цих кроків:

Крок 1: Переконайтесь, що у вашій програмі є файл .env. Якщо не запустити цю команду cp .env.example .env

Крок 2: Тепер запустіть наступну команду ( php artisan key:generate), щоб сформувати ключ, і він автоматично збережеться у файлі .env.

Крок 3: Запустіть, php artisan config:cacheякщо хочете кешувати конфігурацію, абоphp artisan config:clear

Сподіваємось, це все виправить.


7

у .envфайлі дайте цей ключ, і все готово

APP_KEY=ABCDEF123ERD456EABCDEF123ERD456E

Все ще не працює?

Якщо ви працюєте з cli, перезавантажте сервер, і він буде.

Хочете пояснити?

гаразд, як повідомляє повідомлення про помилку:

Єдиними підтримуваними шифрами є AES-128-CBC та AES-256-CBC з правильною довжиною ключів.

Довжина ключа AES-128-CBCскладає 16 символів, наприклад ABCDEF123ERD456E

Довжина ключа AES-256-CBCскладає 32 символи, наприклад ABCDEF123ERD456EABCDEF123ERD456E

Переконайтеся, що в config/app.phpпараметрі cipherвстановлено відповідний шифр, як наведені вище, а ключ вказує на змінну .envфайлу APP_KEY. У моїй програмі AES-256-CBCвстановлено шифр, тому я дав йому 32 символи, як APP_KEY=ABCDEF123ERD456EABCDEF123ERD456Eі після цього все працювало чудово.


5

Просто видаліть значення APP_KEY з файлу .env і запустіть знову ці команди:

php artisan key:generate
php artisan config:cache

Готово.


4

Перевірте файл .env, якщо APP_KEY не встановлений, це проблема, запустіть, php artisan key:generate а потім запустітьphp artisan config:cache

він встановить ключ APP_KEY у вашому файлі .env.

Якщо APP_KEY вже встановлено, виконайте ті самі команди. Він оновить цей ключ.


1

У мене теж було це питання. Я перевіряю значення змінної свого середовища на наявність "APP_KEY"echo $APP_KEY для мене "lumen", який було встановлено для іншого проекту lumen, і тому він не працював.

Я оновив значення "APP_KEY", використовуючи export APP_KEY=[you app_key value from .env file]та очистивши кеш-пам'ять, php artisan config:cacheі воно працювало для мене.


1

Для версії laravel 5.4 PHP 7.4

  1. Для вирішення запустіть цю команду

php artisan key:generate

Це встановить значення APP_KEY=у вашому .envфайлі

щось на зразок цього: APP_KEY=base64:trp5LQ9/TW85+17o0T7F0bZ/Ca1J9cIMgvyNIYl0k/g=

  1. Очистіть кеш, щоб усе знову запрацювало за допомогою таких команд:

php artisan config:clear

тоді php artisan config:cache

Сподіваюся, це допомагає.


0

Інша річ, яку потрібно просто перевірити, - це те, що ваш файл .env знаходиться у групі даних www (або httpd або будь-яка інша група вашого веб-сервера), і що група має дозвіл на читання.

У Linux мої дозволи виглядали так, коли я отримав цю помилку: -rw-rw-r-- 1 kevin kevin 618 Mar 16 09:32 .env тоді я просто видалив дозвіл на читання для всіх і видалив дозвіл на запис для групи. chmod 640 .env Потім я змінив групу на www-data. chown kevin:www-data .env Мої дозволи тепер виглядають так: -rw-r----- 1 kevin www-data 516 Mar 16 09:35 .env


0

Якщо команда artisan не працює, і ви отримуєте ту ж помилку в командному рядку, це означає, що композитор не зробив належної роботи з отриманням усіх файлів, вам слід видалити папку постачальника та запустити composer updateзнову.


0

Якщо ви нещодавно створили проект laravel за допомогою команди like composer create-project --prefer-dist laravel/laravel marketі розгорнули нове репо до шляху до програми за допомогою команди cp, ви можете отримати цю проблему.

Я використовую laravel 5.4

roofe@www:~/market$ php artisan --version
Laravel Framework 5.4.33

Коли ви створюєте проект laravel, ви можете бачити журнали, що створюють ключ, як це:

Створення файлів автозавантаження

Illuminate \ Foundation \ ComposerScripts :: postUpdate php artisan optimize Створення оптимізованого завантажувача класів Скомпільований файл служб видалено. php artisan key: генерувати ключ програми [base64: exxxxxxxxxxxxxxxxxxxxxxxxxxxxx / k =] успішно встановлено.

За замовчуванням конфігурація ключа в config / app.php є такою, вона використовується, AES-256-CBCа згенерований ключ при створенні проекту зберігається у .envфайлі. Якщо ви використовуєте команду, як- cp -r ./* /var/www/market/от .envфайл не буде переміщений до шляху програми.

/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/

'key' => env('APP_KEY'),

'cipher' => 'AES-256-CBC',

Коли я перекладаю свою команду на розгортання cp -r ./* ./.env /var/www/market/, ця проблема зникла.

Ви також можете звернутися до цього випуску github .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.