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 вам необходимо установить один пакет. Подробности приведены ниже:
- вы должны установить пакет
composer require flipbox/lumen-generator
- вы должны добавить
$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
на .