Lumen Micro Framework = > php artisan ключ: создать

я пробую PHP micro Framework Lumen (от Laravel).

один из моих первых шагов было заглянуть в .env.example файл и сделать его копию, чтобы иметь мой . Существует переменная APP_KEY так же, как и в Laravel. Теперь я попробовал простую команду php artisan key:generate чтобы получить мой новый ключ, но я столкнулся следующее сообщение об ошибке

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

кто-нибудь знает, как я могу генерировать ключи для Люмена?

обновление с решением

поэтому я нашел свое любимое решение этой проблемы. В командной строке (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-символьную длинную случайную строку :)

9 ответов


команда Laravel довольно проста. Он просто генерирует случайное 32 символа строки. Вы можете сделать то же самое в Люменах. Просто временно добавьте такой маршрут:

$app->get('/key', function() {
    return str_random(32);
});

тогда перейдите в /key в вашем браузере и скопируйте вставьте ключ в свой .
После этого удалите маршрут.

очевидно, вы также можете использовать какой-то генератор случайных строк онлайн. как это


во-первых, вы должны зарегистрировать свою генератор ключей команды, поставил этот Люмен Ключ Генератор Команды to 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:

cp .env.example .env

игнорировать этот шаг если вы уже используете .

наслаждайтесь через:

php artisan key:generate

редактировать

вы можете использовать Люмена Генератор. Он охватывает так много команд, которые вам не хватает в Laravel.


простое решение-это просто запуск PHP-кода с терминала (без использования tinker, потому что это недоступно с Lumen):

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

Он использует фреймворк Laravel по Str::random() функция, которая использует secure .


для меня самый простой способ сгенерировать ключ люмен набрав в консоли одну из следующих команд:

date | md5
date | md5sum

или

openssl rand -base64 24

в зависимости от вашей среды. В моем случае я всегда использую date | md5 на mac


генерация APP_KEY-это шаг процесса разработки (я не думаю, что создание временных маршрутов-это практический способ сделать это). Функция str_random может помочь нам, но эта функция является частью структуры Laravel/Lunmen. Я рекомендую запустить tinker

php artisan tinker

а затем запустите функцию

>>> str_random(32)

результатом является ключ, который вы ищете.

=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"


этот ответ был вдохновлен обновлением @thomas-venturini на этот вопрос. Вот сценарий bash, который заботится о создании .env и обновление его с помощью APP_KEY используя вышеупомянутую команду PHP и UNIX :

#!/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 -r \"copy('.env.example', '.env');\"

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

команда генерирует ключ, подобный этому:

$2y$10$jb3kw / vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVb5dilsnuapcgjfe


все, что я делаю на mac, это выполняю эту команду в терминале:

date | md5 | pbcopy

это копирует значение в буфер обмена, и поэтому вы можете легко вставить ключ в .


для генерации ключа и использования команды laravel вам необходимо установить один пакет. Подробности приведены ниже:

  1. вы должны установить пакет composer require flipbox/lumen-generator
  2. вы должны добавить $app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class); на .

ссылка:https://github.com/flipboxstudio/lumen-generator