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 символа :)
Ответы
Ответ 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 вам нужно установить один пакет. Детали как ниже:
- Вы должны установить пакет
composer require flipbox/lumen-generator
- Вы должны добавить
$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.