J'essaie le PHP micro Framework Lumen (de Laravel).
Une de mes premières étapes a été d’examiner le fichier .env.example
et d’en faire une copie pour obtenir mon fichier .env
. Il existe une variable APP_KEY, tout comme à Laravel. Maintenant, j'ai essayé la commande simple php artisan key:generate
pour obtenir ma nouvelle clé. Mais j'ai rencontré 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 solution
J'ai donc trouvé ma solution préférée pour résoudre ce problème. Sur la ligne de commande (Linux), je lance php -r "echo md5(uniqid()).\"\n\";"
, ce qui me donne quelque chose comme ceci: 7142720170cef01171fd4af26ef17c93
.
Si vous comptez utiliser Lumen plus souvent, vous pouvez créer un alias dans votre .bashrc
, situé dans votre répertoire personnel /home/USERNAME
. Pour ce faire, vous pouvez ouvrir le fichier avec nano ~/.bashrc
ou vi ~/.bashrc
et copier l'alias suivant à la fin du fichier, alias phpkey='php -r "echo md5(uniqid()).\"\n\";"'
. Vous pouvez maintenant utiliser la commande phpkey
qui vous donnera une chaîne aléatoire de 32 caractères :)
La commande Laravel est assez simple. Il génère simplement une chaîne aléatoire de 32 caractères. Vous pouvez faire la même chose dans Lumen. Ajoutez temporairement un itinéraire comme celui-ci:
$router->get('/key', function() {
return str_random(32);
});
Ensuite, allez à /key
dans votre navigateur et copiez la clé dans votre fichier .env
.
Ensuite, supprimez la route.
Évidemment, vous pouvez également utiliser un générateur de chaîne aléatoire en ligne. Comme celui-ci
Tout d'abord, vous devez enregistrer votre commande de générateur de clés , mettez ceci Lumen Key Generator Commands to app/Console/Commands/KeyGenerateCommand.php
. Pour rendre cette commande disponible dans artisan
, changez 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 l’instance Illuminate\Config\Repository
ait la valeur app.key
. 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 fichier .env.example
dans .env
:
cp .env.example .env
Ignorez cette étape si vous utilisez déjà le fichier
.env
.
Profitez de votre commande key:generate
via:
php artisan key:generate
Vous pouvez utiliser Générateur de lumen . Il couvre tellement de commandes qu'il vous manque de Laravel.
Une solution simple consiste simplement à exécuter le code PHP à partir du terminal (sans utiliser tinker
car ce n'est pas disponible avec Lumen):
php -r "require 'vendor/autoload.php'; echo str_random(32).PHP_EOL;"
Il utilise la fonction Str::random()
de Laravel qui utilise la fonction secure random_bytes()
.
Pour moi, le moyen le plus simple de générer une clé Lumen est de taper sur la console l’une de ces commandes:
date | md5
date | md5sum
ou
openssl Rand -base64 24
en fonction de votre environnement. Dans mon cas, j'utilise toujours date | md5
sur mac
Pour générer la clé et utiliser la commande laravel, vous devez installer un package. Les détails sont comme ci-dessous:
composer require flipbox/Lumen-generator
$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
dans le fichier bootstrap/app.php
.Utilisez simplement PHP CLI. Exécutez cette commande à partir de votre ligne de commande locale ou distante pour générer un Lumen de 32 caractères aléatoire APP_KEY:
php -r "echo bin2hex(random_bytes(16));"
Sortie: bae48aba23b3e4395b7f1b484dd25192
Fonctionne avec PHP 7.x sur Mac et Windows.
Tout ce que je fais sur mac est d’exécuter cette commande dans le terminal:
date | md5 | pbcopy
Ceci copie la valeur dans le presse-papiers et vous permet de coller facilement la clé dans le fichier .env
.
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 à celle-ci:
$ 2a $ 10 $ jb3kw/vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVB5dIlSnUAPCGjFe
Cette réponse a été inspirée par la mise à jour de @ thomas-venturini à la question. Voici un script bash qui prend en charge la création de .env
et sa mise à jour avec un APP_KEY
à l'aide de la commande PHP susmentionnée et de la commande 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
J'espère que quelqu'un trouve cela utile.
Exécutez php -a
pour démarrer le jeu interactif php.
Ensuite, exécutez echo substr(md5(Rand()), 0, 32);
pour générer une chaîne de 32 caractères.
Vous pouvez ensuite copier/coller dans le fichier .env
.
1.Ouvrez votre fichier de configuration de terminal:
vim ~/.zshrc
2.Créez un alias pour générer des chaînes aléatoires:
# Lumen Key Generate
alias Lumen-key="php -r \"require 'vendor/autoload.php'; echo base64_encode(str_random(32)).PHP_EOL;\""
3.Obtenez une clé chaque fois que vous avez besoin de:
~/your-Lumen-project via ???? v7.3.0
➜ Lumen-key
VkxTYWZZSnhVNVEzRThXelBGZVJDVGZVYTNTcm9peHY=
Vous pouvez également supprimer la troisième étape en ajoutant la clé directement dans
.env
à l'aide de PHP.