Подтвердить что ты не робот

Lumen Micro Framework => PHP-ключ: генерировать

Я пробую PHP-фреймворк Lumen (от Laravel).

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

[InvalidArgumentException] Нет никаких команд, определенных в пространстве имен "ключ".

Кто-нибудь знает, как я могу генерировать ключи для 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 символа :)

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Во-первых, вам нужно зарегистрировать команду генератора ключей, поместите эти команды генератора ключей Lumen в 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 значение 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.

Ответ 3

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

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

Он использует функцию Laravel Str::random(), которая использует защищенную функцию random_bytes().

Ответ 4

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

date | md5
date | md5sum

или

openssl rand -base64 24

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

Ответ 5

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

php artisan tinker

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

>>> str_random(32)

Результат - это ключ, который вы ищете.

=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"

Ответ 6

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

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

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

Ответ 7

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

date | md5 | pbcopy

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

Ответ 8

Я использовал эти команды:

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

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

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

$ 2y $ 10 $ jb3kw/vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVB5dIlSnUAPCGjFe

Ответ 9

Этот ответ был вдохновлен обновлением @thomas-venturini на вопрос. Здесь bash script, который заботится о создании .env и обновлении его с помощью APP_KEY с использованием вышеупомянутой команды PHP и команды UNIX 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

Запустите php -a чтобы запустить интерактивную игровую площадку php.

Затем запустите echo substr(md5(rand()), 0, 32); сгенерировать 32-символьную строку.

Затем вы можете скопировать/вставить в файл .env.

Ответ 11

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.

Ответ 12

Просто используйте PHP CLI. Запустите это из локальной или удаленной командной строки, чтобы сгенерировать случайный 32-символьный Lumen APP_KEY:

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

Выход: bae48aba23b3e4395b7f1b484dd25192

Работает с PHP 7.x на Mac и Windows.