85

我正在尝试 PHP 微框架流明(来自 Laravel)。

我的第一步是查看.env.example文件并复制它以获取我的.env文件。有一个变量 APP_KEY 就像在 Laravel 中一样。现在我尝试了简单的命令php artisan key:generate来获取我的新密钥但我遇到了以下错误消息:

[InvalidArgumentException] “key”命名空间中没有定义命令。

有人知道我如何为 Lumen 生成密钥吗?

更新解决方案

所以我找到了我最喜欢的解决这个问题的方法。在命令行(Linux)上,我运行php -r "echo md5(uniqid()).\"\n\";"什么给我这样的东西7142720170cef01171fd4af26ef17c93

如果您打算更频繁地使用 Lumen,您可能需要在.bashrc位于您的主目录中的/home/USERNAME. 为此,您可以使用nano ~/.bashrc或打开文件vi ~/.bashrc并在文件末尾复制以下别名alias phpkey='php -r "echo md5(uniqid()).\"\n\";"'. 现在您可以使用该命令phpkey将给您一个 32 字符长的随机字符串 :)

4

14 回答 14

145

Laravel 命令相当简单。它只是生成一个随机的 32 个字符长的字符串。你可以在 Lumen 中做同样的事情。只是临时添加这样的路线:

$router->get('/key', function() {
    return \Illuminate\Support\Str::random(32);
});

然后进入/key浏览器并将密钥复制粘贴到您的.env文件中。
之后删除路线。

显然,您也可以在线使用一些随机字符串生成器。像这个

于 2015-05-20T08:51:14.073 回答
41

首先,你必须注册你的密钥生成器命令,把这个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

编辑

您可以使用流明生成器。它涵盖了 Laravel 中缺少的许多命令。

于 2015-05-20T14:34:55.083 回答
28

一个简单的解决方案是从终端运行 PHP 代码(不使用tinker,因为 Lumen 不提供):

php -r "require 'vendor/autoload.php'; echo str_random(32).PHP_EOL;"

Str::random()它使用了利用安全功能的 Laravelrandom_bytes()功能。

于 2016-10-19T10:42:43.983 回答
25

只需使用 PHP CLI。从本地或远程命令行运行此命令以生成随机的 32 字符 Lumen APP_KEY:

php -r "echo bin2hex(random_bytes(16));"

输出:bae48aba23b3e4395b7f1b484dd25192

适用于 Mac 和 Windows 上的 PHP 7.x。

于 2019-05-02T19:09:51.727 回答
16

对我来说,生成 Lumen 密钥的最简单方法是在控制台上键入以下命令之一:

date | md5
date | md5sum

或者

openssl rand -base64 24

取决于你的环境。就我而言,我不在date | md5mac上使用

于 2017-06-20T20:54:11.720 回答
13

APP_KEY 生成是开发过程的一个步骤(我不认为创建临时路由是一种实用的方法)。该函数str_random可以帮助我们,但该函数是 Laravel/Lunmen 框架的一部分。我建议运行修补程序

php artisan tinker

然后运行函数

>>> str_random(32)

结果就是您要寻找的钥匙。

=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"

于 2016-04-23T22:52:22.943 回答
5

要生成密钥并使用 laravel 命令,您需要安装一个包。详情如下:

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

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

于 2018-09-06T09:36:56.197 回答
3

我在 mac 上所做的就是在终端中执行这个命令:

date | md5 | pbcopy

这会将值复制到剪贴板中,因此您可以轻松地将密钥粘贴到.env文件中。

于 2018-04-28T07:07:37.810 回答
2

我使用了这些命令:

php -r \"copy('.env.example', '.env');\"

php -r "echo password_hash(uniqid(), PASSWORD_BCRYPT).\"\n\";"

该命令会生成与此类似的密钥:

$2y$10$jb3kw/vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVB5dIlSnUAPCGjFe

于 2018-03-18T21:53:43.193 回答
1

运行php -a以启动交互式 php 游乐场。

然后运行echo substr(md5(rand()), 0, 32);生成一个32个字符的字符串。

然后,您可以复制/粘贴到.env文件中。

于 2019-02-03T17:16:58.007 回答
0

它工作了 100%

只需安装翻转盒/流明发生器包

composer require flipbox/lumen-generator.

在您的 bootstrap/app.php 文件中,添加:

$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);

然后在你可以运行 php artisan 命令之后,更多信息:https ://github.com/flipboxstudio/lumen-generator

于 2022-02-19T05:22:24.117 回答
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=

.env您也可以通过在使用 PHP 中直接添加密钥来删除第三步。

于 2019-02-09T21:57:09.727 回答
0

[翻转盒\流明生成器]

修复错误:没有定义命令...

[boostrap/app] 检查是否在 return $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 / 翻转盒/流明发生器 8.2

于 2021-03-13T21:17:28.553 回答
0

这个答案的灵感来自@thomas-venturini 对问题的更新。这是一个 bash 脚本,它使用前面提到的 PHP 命令和 UNIX命令来创建.env和更新它:APP_KEYsed

#!/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

希望有人觉得这很有用。

于 2016-10-04T16:38:46.720 回答