Ключ приложения Laravel 5

81

Я новичок в 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? Если да, проверьте, есть ли у вас там ключ.
Хуан Карлос Браун,
@ Хуан Карлос Браун Я получил это оттуда, спасибо.
Raham
Я добавил один новый ответ, просто чтобы подчеркнуть пароли пользователей.
prosti

Ответы:

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 / блог

Джеймс
источник
83

Вы можете создать с 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
JohnnyAce
источник
это должно быть по умолчанию? В противном случае, когда вы набираете php artisan key: generate, разве вы не вводите пароли в свою (надеюсь, разрабатываемую) машину? IE нам нужен ключ php artisan: generate --write
Tom Andersen
1
@TomAndersen Нет, APP_KEY используется только для шифрования (по умолчанию файлы cookie), а НЕ для хеширования паролей. Я подумал, что tighten.co/blog/app-key-and-you был хорошим объяснением.
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, автоматически вызывается key: generate.

Если вы измените ключ, имейте в виду, что пароли, сохраненные с помощью 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/..и прошлое В версиях этого кода ключ приложения не используется для добавления хэша или чего-либо еще. Я попытался изменить ключ приложения, и, как следует из кода, мой пароль по-прежнему проверяется правильно.
Leif
1
Ключ приложения используется для шифрования данных сеанса, а не паролей, что упоминается в документации, и, кроме того, по крайней мере, насколько я понимаю, он предполагает симметическое дешифруемое шифрование.
Сергей Несходовский
1

Для меня проблема заключалась в том, что я еще не участвовал composer updateв этом новом проекте / форке . Команда молча провалилась, ничего не произошло.

После запуска composer updateвсе заработало.

ux.engineer
источник
1
Вы можете иметь в виду composer install. Вам не обязательно composer updateсразу запускать новую ветвь проекта, если вы действительно не хотите обновлять зависимости.
Дэн Абрей,