我正在尝试PHP微框架流明(来自Laravel)。
我的第一步是查看.env.example
文件并复制它以获取.env
文件。有一个变量APP_KEY就像在Laravel中一样。现在我尝试使用简单的命令php artisan key:generate
来获取我的新密钥但是我遇到了以下错误消息:
[InvalidArgumentException] “密钥”中没有定义命令 命名空间。
有人知道如何为流明生成密钥吗?
使用解决方案更新
所以我找到了我最喜欢的解决方案。在命令行(Linux)上,我运行了php -r "echo md5(uniqid()).\"\n\";"
,这给了我类似7142720170cef01171fd4af26ef17c93
的内容。
如果您要更频繁地使用流明,您可能需要在.bashrc
中创建一个别名,该别名位于您的主目录/home/USERNAME
中。为此,您可以使用nano ~/.bashrc
或vi ~/.bashrc
打开文件,并在文件末尾复制以下别名alias phpkey='php -r "echo md5(uniqid()).\"\n\";"'
。现在您可以使用命令phpkey
,它将为您提供32个字符长的随机字符串:)
答案 0 :(得分:88)
Laravel命令相当简单。它只生成一个随机的32个字符长的字符串。你也可以在流明做同样的事。只需暂时添加这样的路线:
$router->get('/key', function() {
return str_random(32);
});
然后转到浏览器中的/key
并将密钥复制粘贴到.env
文件中
然后删除路线。
显然你也可以在线使用一些随机字符串生成器。 Like this one
答案 1 :(得分:30)
首先,您必须注册密钥生成器命令,将此Lumen Key Generator Commands添加到app/Console/Commands/KeyGenerateCommand.php
。要在artisan
中使用此命令,请更改app\Console\Kernel.php
:
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
'App\Console\Commands\KeyGenerateCommand',
];
之后,配置您的应用程序,以使Illuminate\Config\Repository
实例具有app.key
值。为此,请更改bootstrap/app.php
:
<?php
require_once __DIR__.'/../vendor/autoload.php';
Dotenv::load(__DIR__.'/../');
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| Here we will load the environment and create the application instance
| that serves as the central piece of this framework. We'll use this
| application as an "IoC" container and router for this framework.
|
*/
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
$app->configure('app');
之后,将您的.env.example
文件复制到.env
:
cp .env.example .env
如果您已使用
.env
文件,请忽略此步骤。
通过以下方式享受key:generate
命令:
php artisan key:generate
您可以使用Lumen Generator。它涵盖了Laravel中缺少的大量命令。
答案 2 :(得分:23)
一个简单的解决方案就是从终端运行PHP代码(不使用tinker
,因为这不适用于Lumen):
php -r "require 'vendor/autoload.php'; echo str_random(32).PHP_EOL;"
它使用Laravel的Str::random()
函数,该函数使用安全的random_bytes()
函数。
答案 3 :(得分:11)
对我来说,生成流明密钥的最简单方法是在控制台上输入以下命令之一:
date | md5
date | md5sum
或
openssl rand -base64 24
取决于您的环境。就我而言,我在mac
上使用date | md5
答案 4 :(得分:9)
APP_KEY生成是开发过程的一个步骤(我不认为创建临时路由是一种实用的方法)。函数str_random
可以帮助我们,但是这个函数是Laravel / Lunmen框架的一部分。
我建议运行修补程序
php artisan tinker
然后运行函数
>>> str_random(32)
结果是你要找的钥匙。
=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"
答案 5 :(得分:3)
要生成密钥并使用laravel命令,您需要安装一个软件包。详细信息如下:
composer require flipbox/lumen-generator
$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
添加到bootstrap/app.php
文件中。答案 6 :(得分:2)
我在mac上所做的只是在终端中执行此命令:
date | md5 | pbcopy
这会将值复制到剪贴板中,因此您可以轻松地将密钥粘贴到.env
文件中。
答案 7 :(得分:1)
我使用过这些命令:
describe()
该命令生成一个类似于此的键:
$ 2Y $ 10 $ jb3kw / vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVB5dIlSnUAPCGjFe
答案 8 :(得分:1)
只需使用PHP CLI。从本地或远程命令行运行此命令,以生成一个随机的32个字符的流明APP_KEY:
php -r "echo bin2hex(random_bytes(16));"
输出:bae48aba23b3e4395b7f1b484dd25192
在Mac和Windows上使用PHP 7.x。
答案 9 :(得分:0)
这个答案的灵感来自@ thomas-venturini对这个问题的更新。这是一个bash脚本,负责创建.env
并使用前面提到的PHP命令和UNIX APP_KEY
命令用sed
更新它:
#!/usr/bin/env bash
function generate_app_key {
php -r "echo md5(uniqid()).\"\n\";"
}
APP_KEY=$(generate_app_key)
sed -e s/APP_KEY=.*$/APP_KEY=${APP_KEY}/g .env.example > .env
希望有人觉得这很有用。
答案 10 :(得分:0)
运行php -a
以启动交互式php游乐场。
然后运行echo substr(md5(rand()), 0, 32);
以生成32个字符串。
然后您可以将其复制/粘贴到.env
文件中。
答案 11 :(得分:0)
1。打开您的终端设置文件:
vim ~/.zshrc
2。创建用于生成随机字符串的别名:
# Lumen Key Generate
alias lumen-key="php -r \"require 'vendor/autoload.php'; echo base64_encode(str_random(32)).PHP_EOL;\""
3。随时获取密钥:
~/your-lumen-project via v7.3.0
➜ lumen-key
VkxTYWZZSnhVNVEzRThXelBGZVJDVGZVYTNTcm9peHY=
您还可以通过使用PHP在
.env
中直接添加密钥来删除第三步。
答案 12 :(得分:0)
[Flipbox\LumenGenerator]
修复错误:没有定义命令...
[boostrap/app] 返回 $app 后检查是否注册了 Flipbox\LumenGenerator。如果是这样,请在返回应用程序之前移动服务提供商注册...
/**
* Configure extra LARAVEL commands to a lumen app
* Check avaliable commands in git: flipboxstudio lumen-generator
*/
if($app->environment() !== 'production'){
$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
}
return $app;
流明 8.0/flipbox/流明发生器 8.2