Lumen Micro Framework = > php artisan key: generate
je suis en train d'essayer le PHP micro Framework Lumen (de Laravel).
un de mes premiers pas a été de regarder dans le .env.example
le fichier et faites-en une copie pour avoir mon .env
fichier. Il y a une variable APP_KEY comme dans Laravel. Maintenant, j'ai essayé la commande simple php artisan key:generate
pour obtenir ma nouvelle clé mais j'ai couru dans le message d'erreur suivant
[InvalidArgumentException]
There are no commands defined in the "key" namespace.
est-ce que quelqu'un sait comment je peux générer des clés pour Lumen?
mise à Jour avec la solution
j'ai Donc trouvé ma solution préférée pour ce problème. Sur la ligne de commande (Linux) j'exécute php -r "echo md5(uniqid())."n";"
ce qui me donne quelque chose comme ceci 7142720170cef01171fd4af26ef17c93
.
Si vous allez utiliser Lumen plus souvent, vous pouvez créer un alias dans votre .bashrc
, qui se trouve dans votre répertoire personnel /home/USERNAME
. Pour ce faire, vous pouvez ouvrir le fichier avec nano ~/.bashrc
ou vi ~/.bashrc
et copiez l'alias suivant à la fin du fichier, alias phpkey='php -r "echo md5(uniqid())."n";"'
. Maintenant, vous pouvez utiliser la commande phpkey
qui vous donnera une longue chaîne de 32 caractères:)
9 réponses
la commande Laravel est assez simple. Il génère juste une chaîne de 32 caractères au hasard. Tu peux faire la même chose en Lumen. Juste ajouter temporairement un itinéraire comme ceci:
$app->get('/key', function() {
return str_random(32);
});
alors allez à /key
dans votre navigateur et copier-coller la clé dans votre .env
fichier.
Ensuite, retirez la route.
évidemment, vous pouvez aussi utiliser un générateur de chaîne aléatoire en ligne. Comme ceci
tout d'Abord, vous devez enregistrer votre commande du générateur de clés, cette Lumen Générateur De Clé Commandesapp/Console/Commands/KeyGenerateCommand.php
. Pour rendre cette commande disponible en artisan
, modifiez app\Console\Kernel.php
:
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
'App\Console\Commands\KeyGenerateCommand',
];
après cela, configurez votre application de sorte que Illuminate\Config\Repository
l'instance a app.key
valeur. Pour ce faire, changez 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');
après cela, copiez votre .env.example
le fichier .env
:
cp .env.example .env
ignorez cette étape si vous utilisez déjà
.env
fichier.
Profitez-vous key:generate
commande via:
php artisan key:generate
Modifier
Vous pouvez utiliser Générateur De Lumière. Il couvre tellement de commandes que vous manquez à Laravel.
une solution facile est d'exécuter du code PHP depuis le terminal (sans utiliser tinker
, parce que ce n'est pas disponible avec Lumen):
php -r "require 'vendor/autoload.php'; echo str_random(32).PHP_EOL;"
Il utilise Laravel Str::random()
fonction qui utilise la secure random_bytes()
fonction.
pour moi, la façon la plus simple de générer une clé Lumen est de taper sur la console une de ces commandes:
date | md5
date | md5sum
ou
openssl rand -base64 24
selon votre environnement. Dans mon cas, je aways utiliser date | md5
sur mac
la génération APP_KEY est une étape du processus de développement (Je ne pense pas que créer temporairement des routes soit un moyen pratique de le faire). La fonction str_random
peut nous aider, mais cette fonction fait partie du cadre Laravel/Lunmen.
Je recommande d'exécuter bricoler
php artisan tinker
et ensuite lancer la fonction
>>> str_random(32)
Le résultat est la clé que vous recherchez.
=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"
cette réponse a été inspirée par la mise à jour de @thomas-venturini à la question. Voici un script bash qui s'occupe de la création .env
et mise à jour avec un APP_KEY
en utilisant la commande PHP mentionnée ci-dessus et L'UNIX sed
commande:
#!/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
j'Espère que quelqu'un trouve cela utile.
j'ai utilisé ces commandes:
php -r \"copy('.env.example', '.env');\"
php -r "echo password_hash(uniqid(), PASSWORD_BCRYPT).\"\n\";"
La commande génère une clé similaire à ceci:
$ 2y $ 10$jb3kw/vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVb5dilsnuapcgjfe
Tout ce que je fais sur mac est d'exécuter cette commande dans le terminal:
date | md5 | pbcopy
cela copie la valeur dans le presse-papiers et ainsi vous pouvez facilement coller la clé dans le .env
fichier.
pour générer la clé et utiliser la commande laravel, vous devez installer un paquet. Les détails sont comme ci-dessous:
- vous devez installer package
composer require flipbox/lumen-generator
- Vous devez ajouter
$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
enbootstrap/app.php
fichier.