PHP micro Framework Lumen(Laravel製)を試しています。
私の最初のステップの1つは、.env.example
ファイルを調べ、そのコピーを作成して.env
ファイルを作成することでした。 Laravelにあるような変数APP_KEYがあります。今、新しいキーを取得するためにphp artisan key:generate
という単純なコマンドを試してみましたが、次のエラーメッセージが表示されました。
[InvalidArgumentException]「キー」名前空間にコマンドが定義されていません。
Lumenのキーを生成する方法を知っている人はいますか?
ソリューションで更新
そこで、この問題に対する私のお気に入りの解決策を見つけました。コマンドライン(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文字のランダムな文字列が得られます:)
Laravelコマンドは非常に簡単です。ランダムな32文字の長い文字列を生成するだけです。ルーメンでも同じことができます。このようなルートを一時的に追加するだけです:
$router->get('/key', function() {
return str_random(32);
});
次に、ブラウザの/key
に移動し、キーをコピーして.env
ファイルに貼り付けます。
その後、ルートを削除します。
もちろん、ランダムな文字列ジェネレーターをオンラインで使用することもできます。 これと同じ
まず、キージェネレーターコマンドを登録し、これ Lumen Key Generator Commands を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.example
ファイルを.env
にコピーします。
cp .env.example .env
既に
.env
ファイルを使用している場合は、このステップを無視してください。
key:generate
コマンドをお楽しみください:
php artisan key:generate
Lumen Generator を使用できます。 Laravelに欠けているコマンドがたくさんあります。
簡単な解決策は、ターミナルからPHPコードを実行することです(tinker
を使用せず、Lumenでは使用できないため):
php -r "require 'vendor/autoload.php'; echo str_random(32).PHP_EOL;"
安全なStr::random()
関数を利用するLaravelのrandom_bytes()
関数を使用します。
私にとって、Lumenキーを生成する最も簡単な方法は、次のコマンドのいずれかをコンソールで入力することです。
date | md5
date | md5sum
または
openssl Rand -base64 24
環境によって異なります。私の場合、Macではdate | md5
を使用しています
APP_KEY生成は、開発プロセスのステップです(一時的にルートを作成することが実際的な方法であるとは思いません)。関数str_random
は役に立ちますが、この関数はLaravel/Lunmenフレームワークの一部です。ティンカーを実行することをお勧めします
php artisan tinker
そして、関数を実行します
>>> str_random(32)
結果はあなたが探している鍵です。
=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"
単にPHP CLIを使用します。これをローカルまたはリモートコマンドラインから実行して、ランダムな32文字のLumen APP_KEYを生成します。
php -r "echo bin2hex(random_bytes(16));"
出力:bae48aba23b3e4395b7f1b484dd25192
MacおよびWindows上のPHP 7.xで動作します。
キーを生成してlaravelコマンドを使用するには、1つのパッケージをインストールする必要があります。詳細は次のとおりです。
composer require flipbox/Lumen-generator
をインストールする必要があります$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
をbootstrap/app.php
ファイルに追加する必要があります。Macで行うことは、ターミナルで次のコマンドを実行することだけです。
date | md5 | pbcopy
これにより、値がクリップボードにコピーされるため、.env
ファイルにキーを簡単に貼り付けることができます。
php -a
を実行して、インタラクティブなPHPプレイグラウンドを起動します。
次にecho substr(md5(Rand()), 0, 32);
を実行して、32文字の文字列を生成します。
その後、.env
ファイルにコピー/貼り付けできます。
私はこれらのコマンドを使用しました:
php -r \"copy('.env.example', '.env');\"
php -r "echo password_hash(uniqid(), PASSWORD_BCRYPT).\"\n\";"
このコマンドは、次のようなキーを生成します。
$ 2y $ 10 $ jb3kw/vUANyzZ4ncMa4rwuR09qldQ2OjX8PGrVB5dIlSnUAPCGjFe
この回答は、質問に対する@ thomas-venturiniの更新に触発されました。上記のPHPコマンドとUNIX sed
コマンドを使用して、.env
を作成し、APP_KEY
で更新するbashスクリプトを次に示します。
#!/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
誰かがこれが役に立つと思ってほしい。
1.端末セットアップファイルを開きます。
vim ~/.zshrc
2.ランダムな文字列を生成するためのエイリアスを作成します。
# Lumen Key Generate
alias Lumen-key="php -r \"require 'vendor/autoload.php'; echo base64_encode(str_random(32)).PHP_EOL;\""
3.必要なときにいつでもキーを取得します:
~/your-Lumen-project via ???? v7.3.0
➜ Lumen-key
VkxTYWZZSnhVNVEzRThXelBGZVJDVGZVYTNTcm9peHY=
PHPを使用して
.env
にキーを直接追加することで、3番目の手順を削除することもできます。