Laravel 5 应用程序密钥
Posted
技术标签:
【中文标题】Laravel 5 应用程序密钥【英文标题】:Laravel 5 Application Key 【发布时间】:2016-02-15 11:56:06 【问题描述】:我是 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 我从那里得到它,谢谢。 我添加了一个新答案,只是为了强调用户密码。 【参考方案1】:您的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/博客
【讨论】:
【参考方案2】:您可以通过以下命令生成key
:
php artisan key:generate
密钥将自动写入您的.env
文件中。
APP_KEY=YOUR_GENERATED_KEY
如果您想在生成后查看您的key
,请使用--show
选项
php artisan key:generate --show
注意:.env
是项目文件夹中的隐藏文件。
【讨论】:
如果你已经有默认的空行 APP_KEY =,运行命令时行会自动更新【参考方案3】:如果您只想打印可以使用的密钥(不写入 .env 文件),作为另一种选择:
php artisan key:generate --show
【讨论】:
这应该是默认的吗?否则,当您键入 php artisan key:generate 时,您不会在(希望是开发)机器中输入密码吗? IE 我们需要 php artisan key:generate --write @TomAndersen 不,APP_KEY 仅用于加密(因此,默认情况下,cookie),不用于密码哈希。我认为tighten.co/blog/app-key-and-you 是一个很好的解释。【参考方案4】:从线
'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()
保存的密码将不再有效。
【讨论】:
"如果您更改密钥,请注意使用 Hash::make() 保存的密码将不再有效。" - 我也是这么想的。我也经常在网上读到这个。但是,如果您查看 github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… 和 github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… 以及此代码的过去版本,应用程序密钥不会用于对哈希进行加盐或用于其他任何事情。我尝试更改应用程序密钥,并且如代码所示,我的密码仍然检查正确。 应用程序密钥用于加密会话数据,而不是documentation 中提到的密码,此外,至少根据我的理解,它假定对称可解密加密。【参考方案5】:对我来说,问题在于我还没有为这个新的 project/fork 运行 composer update
。命令静默失败,什么也没发生。
运行composer update
后,它工作了。
【讨论】:
您的意思可能是composer install
。除非您确实想要更新依赖项,否则您不必立即在项目的新分支上运行 composer update
。以上是关于Laravel 5 应用程序密钥的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.5 中验证 Mailchimp api 密钥
Laravel 应用程序密钥 - 它是啥以及它是如何工作的?
Laravel 框架版本 5.2.26 安装在 ubuntu os 中获取密钥生成错误
Laravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节 laravel 5.3