Klucz aplikacji Laravel 5

81

Jestem nowy w Laravel. Właśnie zacząłem to dziś wieczorem. Właściwie mam następujący kod:

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

W xampp / htdocs / laravel / blog / config / app.php .
Chcę zmienić ten klucz na 32-bitowy przez cmd jako:

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

Generuje klucz, ale nie może zastąpić / zaktualizować w xampp / htdocs / laravel / blog / config / app.php .

Raham
źródło
Czy masz plik .env na miejscu? jeśli tak, sprawdź, czy masz tam klucz.
Juan Carlos Brown
@Juan Carlos Brown Mam to stamtąd, dziękuję.
Raham
Dodałem jedną nową odpowiedź, aby podkreślić hasła użytkowników.
prosti

Odpowiedzi:

108

Ta linia w twojej app.php, 'key' => env('APP_KEY', 'SomeRandomString'),jest powiedzenie, że kluczem do aplikacji można znaleźć w .envpliku na linii APP_KEY.

Zasadniczo mówi Laravelowi, aby najpierw szukał klucza w .envpliku, a jeśli go nie ma, to go użyć 'SomeRandomString'.

Gdy użyjesz php artisan key:generate, wygeneruje nowy klucz do .envpliku, a nie do app.phppliku.

Jak powiedział kotapeter, Twój .envbędzie znajdował się w głównym katalogu Laravel i może być ukryty; xampp / htdocs / laravel / blog

James
źródło
83

Możesz wygenerować keynastępującą komendę:

php artisan key:generate 

Klucz zostanie automatycznie zapisany w twoim .envpliku.

APP_KEY=YOUR_GENERATED_KEY

Jeśli chcesz zobaczyć swoją opcję keypo pokoleniu, użyj --showopcji

php artisan key:generate --show

Uwaga: .envjest to plik ukryty w folderze projektu.

wprowadź opis obrazu tutaj

Peter Kota
źródło
2
linia jest aktualizowana automatycznie po uruchomieniu polecenia, jeśli masz już domyślną pustą linię APP_KEY =
Andrew
42

Podobnie jak inna opcja, jeśli chcesz wydrukować tylko klucz (nie zapisuje pliku .env), możesz użyć:

php artisan key:generate --show
JohnnyAce
źródło
to powinno być domyślne? W przeciwnym razie, kiedy wpiszesz klucz php artisan: generuj, czy nie łączysz haseł na swojej (miejmy nadzieję, że programistycznej) maszynie? IE potrzebujemy klucza artisan php: generation --write
Tom Andersen
1
@TomAndersen Nie, APP_KEY służy tylko do szyfrowania (a więc domyślnie plików cookie), a NIE do haszowania haseł. Pomyślałem, że tighten.co/blog/app-key-and-you to miłe wyjaśnienie.
Charles Wood
2

Z linii

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

APP_KEYto globalna zmienna środowiskowa obecna w .envpliku.

Możesz zastąpić klucz aplikacji, jeśli wyzwolisz

php artisan key:generate

Komenda. To zawsze spowoduje wygenerowanie nowego klucza.

Wynik może wyglądać następująco:


Application key [Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3] set successfully.

Application key [base64:uynE8re8ybt2wabaBjqMwQvLczKlDSQJHCepqxmGffE=] set successfully.

Kodowanie Base64 powinno być domyślne w Laravel 5.4

Zauważ, że kiedy po raz pierwszy tworzysz swoją aplikację Laravel, automatycznie wywoływany jest key: generation.

Jeśli zmienisz klucz, pamiętaj, że hasła zapisane za pomocą Hash::make()nie będą już ważne.

prosti
źródło
4
„Jeśli zmienisz klucz, pamiętaj, że hasła zapisane za pomocą Hash :: make () nie będą już ważne”. - To też coś, o czym myślałem. Czytam to też dość często w internecie. Jeśli jednak spojrzysz na github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/ ... i github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/ ... i przeszłość wersje tego kodu, klucz aplikacji nie jest używany do solenia skrótu ani do niczego innego. Próbowałem zmienić klucz aplikacji i, jak sugeruje kod, moje hasło jest nadal poprawnie sprawdzane.
Leif
1
Klucz aplikacji służy do szyfrowania danych sesji, a nie haseł, o czym jest mowa w dokumentacji, a ponadto, przynajmniej w moim rozumieniu, zakłada on szyfrowanie symetryczne, które można odszyfrować.
Sergey Neskhodovskiy
1

Dla mnie problem polegał na tym, że jeszcze nie pobierałem composer updatetego nowego projektu / forka . Komenda po cichu zawiodła, nic się nie stało.

Po uruchomieniu composer updatezadziałało.

ux.engineer
źródło
1
Możesz mieć na myśli composer install. Nie musisz koniecznie composer updatenatychmiast uruchamiać nowego rozwidlenia projektu, chyba że faktycznie chcesz aktualizować zależności.
Dan Abrey