Ключ програми Laravel 5


80

Я новачок у Laravel. Я щойно розпочав це сьогодні ввечері. Власне, я маю такий код:

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

У xampp / htdocs / laravel / blog / config / app.php .
Я хочу змінити цей ключ на 32-бітний на cmd як:

xampp\htdocs\laravel/blog>php artisan key:generate 

Він генерує ключ, але не може замінити / оновити в xampp / htdocs / laravel / blog / config / app.php .


Чи є у вас файл .env? якщо так, будь ласка, перевірте, чи є у вас там ключ.
Хуан Карлос Браун

@Juan Carlos Brown Я отримав звідти, дякую.
Рахам

Я додав одну нову відповідь, лише наголосивши на паролях користувачів.
прості

Відповіді:


108

Ця лінія у вашій app.php, 'key' => env('APP_KEY', 'SomeRandomString'),, говорить про те , що ключ для програми можна знайти у вашому .envфайлі на лінії APP_KEY.

В основному це вказує Laravel шукати ключ у .envфайлі спочатку, а якщо його там немає, то використовувати 'SomeRandomString'.

Коли ви використовуєте, php artisan key:generateвін генерує новий ключ до вашого .envфайлу, а не до app.phpфайлу.

Як сказав kotapeter, ви .envзнаходитесь у вашому кореневому каталозі Laravel і може бути прихованим; xampp / htdocs / laravel / blog


82

Ви можете створити a keyза допомогою такої команди:

php artisan key:generate 

Ключ буде автоматично записаний у ваш .envфайл.

APP_KEY=YOUR_GENERATED_KEY

Якщо ви хочете переглянути свій варіант keyвикористання після генерації--show

php artisan key:generate --show

Примітка. Це .envприхований файл у папці проекту.

введіть тут опис зображення


2
рядок оновлюється автоматично при запуску команди, якщо у вас вже є порожній рядок за замовчуванням APP_KEY =
Ендрю

42

Як і інший варіант, якщо ви хочете надрукувати лише ключ (не пише файл .env), ви можете використовувати:

php artisan key:generate --show

це має бути за замовчуванням? В іншому випадку, коли ви вводите php ремісничий ключ: генеруйте, чи не вводите ви паролі на своїй машині (сподіваємось на розробку)? Тобто нам потрібен php ремісничий ключ: create --write
Tom Andersen

1
@TomAndersen Ні, APP_KEY використовується лише для шифрування (отже, за замовчуванням файли cookie), НЕ для хешування паролів. Я думав, затягніть .
Charles Wood

2

З рядка

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

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

Ви можете замінити ключ програми, якщо активуєте

php artisan key:generate

команди. Це завжди генерує новий ключ.

Вихід може бути таким:


Application key [Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3] set successfully.

Application key [base64:uynE8re8ybt2wabaBjqMwQvLczKlDSQJHCepqxmGffE=] set successfully.

Кодування Base64 має бути типовим у Laravel 5.4

Зверніть увагу, що під час першого створення програми Laravel автоматично викликається ключ: generirati.

Якщо ви змінили ключ, пам’ятайте, що збережені паролі Hash::make()більше не будуть дійсними.


4
"Якщо ви змінили ключ, пам’ятайте, що паролі, збережені за допомогою Hash :: make (), більше не будуть дійсними." - Це теж я думав. Я також досить часто читаю це в Інтернеті. Однак, якщо ви подивитесь на github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… та github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… та минуле версії цього коду, ключ програми не використовується для соління хешу або для чогось іншого. Я спробував змінити ключ програми, і, як пропонується кодом, мій пароль все ще перевіряється правильно.
Лейф,

1
Ключ програми використовується для шифрування даних сеансу, а не паролів, про що згадується в документації, і крім того, принаймні, наскільки я розумію, він передбачає симетричне шифрування.
Сергій Несходовський

1

Для мене проблема полягала в тому, що я ще не балотувався composer updateна цей новий проект / форк . Команда мовчки провалилася, нічого не сталося.

Після запуску composer updateце спрацювало.


1
Ви можете сказати composer install. Вам не обов'язково запускати composer updateнегайно нову форку проекту, якщо ви насправді не хочете оновлювати залежності.
Ден Ебрі,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.