web-dev-qa-db-fra.com

Lumen Micro Framework => clé artisanale php: générer

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 :)

45
Thomas Venturini

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

78
lukasgeiter

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

Modifier

Vous pouvez utiliser Générateur de lumen . Il couvre tellement de commandes qu'il vous manque de Laravel.

28
krisanalfa

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().

20
Jeroen Noten

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

8
Fábio N Lima

Pour générer la clé et utiliser la commande laravel, vous devez installer un package. Les détails sont comme ci-dessous: 

  1. Vous devez installer le package composer require flipbox/Lumen-generator
  2. Vous devez ajouter $app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class); dans le fichier bootstrap/app.php.

Lien: https://github.com/flipboxstudio/Lumen-generator

2
Umang Soni

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.

1
Chad Kieffer

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.

1
ubuntugod

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

1
Juan Manuel Mc

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.

0
DuffJ

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.

0
roerjo

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.

0
Alexandre Thebaldi