Laravel 5应用程序密钥


80

我是Laravel的新手。我今晚才开始。实际上,我有以下代码:

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

xampp / htdocs / laravel / blog / config / app.php中
我想通过cmd将密钥更改为32位,如下所示:

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

它会生成密钥,但无法在xampp / htdocs / laravel / blog / config / app.php中进行替换/更新。


您是否有.env文件?如果是这样,请检查其中是否有钥匙。
Juan Carlos Brown

@胡安·卡洛斯·布朗我是从那里买的,谢谢。
拉罕(Raham)2015年

我添加了一个新答案,以强调用户密码。
prosti

Answers:


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


80

您可以key通过以下命令生成一个:

php artisan key:generate 

密钥将自动写入.env文件中。

APP_KEY=YOUR_GENERATED_KEY

如果您想查看您的key后代使用--show选项

php artisan key:generate --show

注意:.env是项目文件夹中的隐藏文件。

在此处输入图片说明


2
如果您已经具有默认的空行,则运行命令时该行会自动更新APP_KEY =
Andrew

41

就像另一个选择,如果您只想打印密钥(不写.env文件),则可以使用:

php artisan key:generate --show

这应该是默认值吗?否则,当您键入php artisan key:generate时,您是否在(希望开发的)计算机上使用密码?IE浏览器,我们需要PHP artisan key:generate --write
Tom Andersen

1
@TomAndersen不,APP_KEY仅用于加密(因此,默认情况下为cookie),而不用于密码哈希。我以为tight.co/blog/app-key-and-you是一个很好的解释。
查尔斯·伍德

2

从线

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

APP_KEY.env文件中存在的全局环境变量。

如果触发,则可以替换应用程序密钥

php artisan key:generate

命令。这将始终生成新密钥。

输出可能是这样的:


Application key [Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3] set successfully.

Application key [base64:uynE8re8ybt2wabaBjqMwQvLczKlDSQJHCepqxmGffE=] set successfully.

Laravel 5.4中的默认Base64编码

请注意,当您首次创建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 '18

1
应用程序密钥用于加密会话数据,而不是密码(在文档中提到),此外,至少根据我的理解,它采用对称的可解密加密。
Sergey Neskhodovskiy

1

对我来说,问题在于我还没有参加composer update这个新的项目/叉子。该命令无提示失败,没有任何反应。

运行后,composer update它工作了。


1
你可能是说composer installcomposer update除非您确实想更新依赖项,否则不必一定要在项目的新分支上立即运行。
丹·阿伯里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.