tutorial start software run new app php lumen

start - Lumen Micro Framework=> clave artesanal php: generar



php lumen start (12)

Estoy probando el PHP Micro Framework Lumen (de Laravel).

Uno de mis primeros pasos fue buscar en el archivo .env.example y hacer una copia para tener mi archivo .env . Hay una variable APP_KEY tal como la hay en Laravel. Ahora probé el comando simple php artisan key:generate para obtener mi nueva clave Pero me encontré con el siguiente mensaje de error:

[InvalidArgumentException] No hay comandos definidos en el espacio de nombres "clave".

¿Alguien sabe cómo puedo generar claves para Lumen?

Actualización con solución

Entonces encontré mi solución favorita para este problema. En la línea de comando (Linux) ejecuto php -r "echo md5(uniqid())./"/n/";" lo que me da algo como esto 7142720170cef01171fd4af26ef17c93 .

Si va a usar Lumen con más frecuencia, puede crear un alias en su .bashrc , que se encuentra en su directorio personal /home/USERNAME . Para hacerlo, puede abrir el archivo con nano ~/.bashrc o vi ~/.bashrc y copiar el siguiente alias al final del archivo, alias phpkey=''php -r "echo md5(uniqid())./"/n/";"'' . Ahora puede usar el comando phpkey que le dará una cadena aleatoria de 32 caracteres de longitud :)


1.Abra el archivo de configuración de su terminal:

vim ~/.zshrc

2.Cree un alias para generar cadenas aleatorias:

# Lumen Key Generate alias lumen-key="php -r /"require ''vendor/autoload.php''; echo base64_encode(str_random(32)).PHP_EOL;/""

3. Obtenga una clave cuando lo necesite:

~/your-lumen-project via 🐘 v7.3.0 ➜ lumen-key VkxTYWZZSnhVNVEzRThXelBGZVJDVGZVYTNTcm9peHY=

También puede eliminar el tercer paso agregando la clave directamente en .env usando PHP.


Ejecute php -a para iniciar php playground interactivo.

Luego ejecute echo substr(md5(rand()), 0, 32); para generar una cadena de 32 caracteres.

Luego puede copiar / pegar en el archivo .env .


El comando Laravel es bastante simple. Simplemente genera una cadena aleatoria de 32 caracteres. Puedes hacer lo mismo en Lumen. Solo agrega temporalmente una ruta como esta:

$router->get(''/key'', function() { return str_random(32); });

Luego vaya a /key en su navegador y copie y pegue la clave en su archivo .env .
Luego elimine la ruta.

Obviamente, también podría usar un generador de cadenas al azar en línea. Como éste


En primer lugar, debe registrar su comando de generador de claves , coloque estos comandos de generador de claves de Lumen en app/Console/Commands/KeyGenerateCommand.php . Para que este comando esté disponible en artisan , cambie app/Console/Kernel.php :

/** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ ''App/Console/Commands/KeyGenerateCommand'', ];

Después de eso, configure su aplicación para que la instancia Illuminate/Config/Repository tenga el valor app.key . Para hacer esto, cambie 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'');

Después de eso, copie su archivo .env a .env :

cp .env.example .env

Ignore este paso si ya usa el archivo .env .

Disfruta tu key:generate comando a través de:

php artisan key:generate

Editar

Puede usar Lumen Generator . Cubre tantos comandos que te faltan en Laravel.


Esta respuesta fue inspirada por la actualización de @ thomas-venturini a la pregunta. Aquí hay un script bash que se encarga de crear .env y actualizarlo con una APP_KEY utilizando el comando PHP mencionado anteriormente y el comando sed 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

Espero que alguien encuentre esto útil.


He usado estos comandos:

php -r /"copy(''.env.example'', ''.env'');/" php -r "echo password_hash(uniqid(), PASSWORD_BCRYPT)./"/n/";"

El comando genera una clave similar a esta:

$ 2a $ 10 $ jb3kw / vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVB5dIlSnUAPCGjFe


La generación APP_KEY es un paso del proceso de desarrollo (no creo que crear rutas temporales sea una forma práctica de hacerlo). La función str_random puede ayudarnos, pero esta función es parte del marco Laravel / Lunmen. Recomiendo ejecutar tinker

php artisan tinker

y luego ejecuta la función

>>> str_random(32)

El resultado es la clave que estás buscando.

=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"


Para generar la clave y usar el comando laravel, necesita instalar un paquete. Los detalles son los siguientes:

  1. composer require flipbox/lumen-generator instalar el composer require flipbox/lumen-generator paquetes composer require flipbox/lumen-generator
  2. $app->register(Flipbox/LumenGenerator/LumenGeneratorServiceProvider::class); agregar $app->register(Flipbox/LumenGenerator/LumenGeneratorServiceProvider::class); en el archivo bootstrap/app.php .

Enlace: https://github.com/flipboxstudio/lumen-generator


Para mí, la forma más fácil de generar una clave Lumen es escribir en la consola uno de estos comandos:

date | md5 date | md5sum

o

openssl rand -base64 24

Dependiendo de su entorno. En mi caso, siempre uso date | md5 date | md5 en mac


Simplemente use PHP CLI. Ejecute esto desde su línea de comando local o remota para generar un Lumen APP_KEY aleatorio de 32 caracteres:

php -r "echo bin2hex(random_bytes(16));"

Salida: bae48aba23b3e4395b7f1b484dd25192

Funciona con PHP 7.x en Mac y Windows.


Todo lo que hago en mac es ejecutar este comando en la terminal:

date | md5 | pbcopy

Esto copia el valor en el portapapeles y puede pegar fácilmente la clave en el archivo .env .


Una solución fácil es simplemente ejecutar el código PHP desde la terminal (sin usar tinker , porque eso no está disponible con Lumen):

php -r "require ''vendor/autoload.php''; echo str_random(32).PHP_EOL;"

Utiliza la función Str::random() Laravel que utiliza la función secure random_bytes() .