Lumen 微框架 => php artisan key:generate

Lumen Micro Framework => php artisan key:generate

我正在试用 PHP 微型框架 Lumen(来自 Laravel)。

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

[InvalidArgumentException] There are no commands defined in the "key" namespace.

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

更新解决方案

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

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

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

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

然后在您的浏览器中转到 /key 并将密钥复制粘贴到您的 .env 文件中。
然后删除路由。

显然您也可以在线使用一些随机字符串生成器。 Like this one

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

Ignore this step if you already use .env file.

享受你 key:generate 命令通过:

php artisan key:generate

编辑

您可以使用 Lumen Generator。它涵盖了您在 Laravel.

中遗漏的许多命令

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

php artisan tinker

然后运行函数

>>> str_random(32)

结果就是您要查找的密钥。

=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"

这个答案的灵感来自@thomas-venturini 对问题的更新。这是一个 bash 脚本,它负责创建 .env 并使用上述 PHP 命令和 UNIX sed 命令用 APP_KEY 更新它:

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

希望有人觉得这有用。

一个简单的解决方案就是来自终端的 运行 PHP 代码(不使用 tinker,因为这不适用于 Lumen):

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

它使用 Laravel 的 Str::random() 函数,该函数利用了安全 random_bytes() 函数。

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

date | md5
date | md5sum

openssl rand -base64 24

取决于您的环境。就我而言,我在 mac

上使用 date | md5

我使用过这些命令:

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

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

命令生成的密钥类似于:

y$jb3kw/vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVB5dIlSnUAPCGjFe

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

date | md5 | pbcopy

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

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

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

Link: https://github.com/flipboxstudio/lumen-generator

运行 php -a 启动交互式 php playground。

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

然后您可以 copy/paste 进入 .env 文件。

1.Open 您的终端设置文件:

vim ~/.zshrc

2.Create 生成随机字符串的别名:

# Lumen Key Generate
alias lumen-key="php -r \"require 'vendor/autoload.php'; echo base64_encode(str_random(32)).PHP_EOL;\""

3.Get一键随手:

~/your-lumen-project via  v7.3.0
➜ lumen-key
VkxTYWZZSnhVNVEzRThXelBGZVJDVGZVYTNTcm9peHY=

You can also remove the third step by adding the key directly in .env using PHP.

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

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

输出:bae48aba23b3e4395b7f1b484dd25192

在 Mac 和 Windows 上与 PHP 7.x 一起工作。

[Flipbox\LumenGenerator]

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

[boostrap/app] 检查您是否在 return $app 之后注册了 Flipbox\LumenGenerator。如果是这样,请在 return app...

之前移动服务提供商注册
/**
 * 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/lumen-generator 8.2

100% 有效

只需安装 flipbox/lumen-generator 包

composer require flipbox/lumen-generator.

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

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

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