Lumen Micro Framework => php artisan key:generate

时间:2015-05-20 08:23:38

标签: php lumen

我正在尝试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 ~/.bashrcvi ~/.bashrc打开文件,并在文件末尾复制以下别名alias phpkey='php -r "echo md5(uniqid()).\"\n\";"'。现在您可以使用命令phpkey,它将为您提供32个字符长的随机字符串:)

13 个答案:

答案 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命令,您需要安装一个软件包。详细信息如下:

  1. 您必须安装软件包composer require flipbox/lumen-generator
  2. 您必须将$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);添加到bootstrap/app.php文件中。

链接:https://github.com/flipboxstudio/lumen-generator

答案 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