Ich probiere das PHP Micro Framework Lumen (von Laravel) aus.
Einer meiner ersten Schritte war der Blick in die .env.example Datei und machen Sie eine Kopie davon, um meine zu haben .env Datei. Es gibt eine Variable APP_KEY, genau wie in Laravel. Jetzt habe ich den einfachen Befehl ausprobiert php artisan key:generate Um meinen neuen Schlüssel zu bekommen, bin ich auf folgende Fehlermeldung gestoßen:
[InvalidArgumentException] Im “key”-Namespace sind keine Befehle definiert.
Weiß jemand, wie ich Schlüssel für Lumen generieren kann?
Update mit Lösung
Also habe ich meine Lieblingslösung für dieses Problem gefunden. Auf der Kommandozeile (Linux) laufe ich php -r "echo md5(uniqid()).\"\n\";" was bringt mir sowas 7142720170cef01171fd4af26ef17c93.
Wenn Sie Lumen häufiger verwenden, möchten Sie möglicherweise einen Alias in Ihrem erstellen .bashrcdie sich in Ihrem Home-Verzeichnis befindet /home/USERNAME. Dazu können Sie die Datei mit öffnen nano ~/.bashrc oder vi ~/.bashrc und kopieren Sie den folgenden Alias am Ende der Datei, alias phpkey='php -r "echo md5(uniqid()).\"\n\";"'. Jetzt können Sie den Befehl verwenden phpkey was Ihnen eine 32 Zeichen lange Zufallszeichenfolge gibt 🙂
Die Verwendung einer schnellen Hash-Funktion wie md5 erhöht die Entropie nicht und uniqid ist eine Quelle der “Zufälligkeit” mit niedriger Entropie. Bitte verwenden Sie die von @lukasgeiter as bereitgestellte Lösung str_random zieht Bytes von einem kryptografisch sicheren Zufallszahlengenerator.
– Michael Cordingley
29. Juni 2018 um 20:21 Uhr
Lukasgeiter
Der Laravel-Befehl ist ziemlich einfach. Es generiert einfach eine zufällige 32 Zeichen lange Zeichenfolge. Sie können dasselbe in Lumen tun. Fügen Sie einfach vorübergehend eine Route wie diese hinzu:
Dann geh zu /key in Ihrem Browser und kopieren Sie den Schlüssel in Ihre .env Datei.
Entfernen Sie anschließend die Route.
Natürlich könnten Sie auch einen zufälligen String-Generator online verwenden. Wie dieser
Schöne Lösung 🙂 Aber ich habe wirklich nach einer Methode gesucht, um es auf die “Laravel/Lumen”-Art zu machen;)
– Thomas Venturi
20. Mai 2015 um 8:59 Uhr
Da ist gar nichts. Lumen muss leicht sein, also ist es Sache des Entwicklers, Dinge wie das Generieren von Schlüsseln zu tun …
– Lukasgeiter
20. Mai 2015 um 9:18 Uhr
Elegante Lösung!
– wow
26. November 2016 um 22:11 Uhr
In der letzten Version wurde $app in $router geändert. Ruhe ist richtig.
– Manish Shukla
14. Mai 2018 um 11:15 Uhr
Kleine Verbesserungen if (!app()->environment('prod')) $router->get('/key', function() { return 'APP_KEY=base64:'. base64_encode(\Illuminate\Support\Str::random(32)); });
– 8 Tintenfisch
26. Mai 2020 um 3:51 Uhr
krisanalfa
Zunächst müssen Sie sich registrieren SchlüsselgeneratorbefehlStell Dies Lumen-Key-Generator-Befehle zu app/Console/Commands/KeyGenerateCommand.php. Um diesen Befehl verfügbar zu machen in artisanRückgeld app\Console\Kernel.php:
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
'App\Console\Commands\KeyGenerateCommand',
];
Danach konfigurieren Sie Ihre Anwendung so, dass Illuminate\Config\Repository Instanz hat app.key Wert. Wechseln Sie dazu 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');
Kopieren Sie danach Ihre .env.example Datei zu .env:
cp .env.example .env
Ignorieren Sie diesen Schritt, wenn Sie ihn bereits verwenden .env Datei.
Genieße dich key:generate Befehl über:
php artisan key:generate
Bearbeiten
Sie dürfen verwenden Lumen-Generator. Es deckt so viele Befehle ab, die Sie in Laravel vermissen.
Ich würde eher mit dieser Antwort gehen, es ist die Laravel-Implementierung und sie lehrt Sie ein wenig darüber, wie Konsolenbefehle strukturiert sind und wohin sie im Kontext Ihrer App gehen. Es ist wirklich cool, wenn man einmal hineintaucht 😀
– Etienne Marais
10. Februar 2016 um 18:38 Uhr
Schöne Lösung! danke für das Teilen. Eine Kleinigkeit: Ich würde KeyGenerateCommand::class anstelle des fest codierten Klassennamens in verwenden $commands 😉
– itsjavi
17. April 2016 um 1:26 Uhr
Dies funktioniert nicht, wenn der Schlüssel leer war. Verwenden Sie dies, um den Schlüssel zu ersetzen: str_replace(‘APP_KEY=’.env(‘APP_KEY’), ‘APP_KEY=’.$key, file_get_contents($path))
– Hao
12. Oktober 2016 um 9:48 Uhr
Bei Lumen bekomme ich folgende Fehlermeldung: There are no commands defined in the "key" namespace.
– Pathos
28. Januar 2019 um 16:53 Uhr
Fehler ‘Es sind keine Befehle im Namensraum “Schlüssel” definiert.’
– Kamlesh
12. Februar 2020 um 10:22 Uhr
Eine einfache Lösung besteht darin, PHP-Code einfach vom Terminal aus auszuführen (ohne die Verwendung von tinkerweil das bei Lumen nicht verfügbar ist):
Es verwendet Laravels Str::random() Funktion, die das Sichere nutzt random_bytes() Funktion.
Einzeiler mit Base64-codierter Ausgabe für Lumen >= 5,4: php -r "require 'vendor/autoload.php'; echo base64_encode(str_random(32)).PHP_EOL;"
– 4 Ebenen
20. März 2018 um 23:04 Uhr
Verwenden Sie einfach die PHP-CLI. Führen Sie dies von Ihrer lokalen oder einer Remote-Befehlszeile aus, um einen zufälligen Lumen APP_KEY mit 32 Zeichen zu generieren:
php -r "echo bin2hex(random_bytes(16));"
Ausgabe: bae48aba23b3e4395b7f1b484dd25192
Funktioniert mit PHP 7.x auf Mac und Windows.
Für mich ist der einfachste Weg, einen Lumen-Schlüssel zu generieren, einen dieser Befehle auf der Konsole einzugeben:
date | md5
date | md5sum
oder
openssl rand -base64 24
abhängig von Ihrer Umgebung. In meinem Fall verwende ich immer date | md5 auf mac
Vergessen Sie nicht, den md5-Schlüssel für Lumen > 5,4 base64 zu codieren, z. php -r "echo base64_encode(\"[YOUR-MD5-STRING]\");" – Fügen Sie es mit dem Präfix hinzu base64: in deiner .env Datei..
– 4 Ebenen
20. März 2018 um 23:03 Uhr
Kosmitar
Die APP_KEY-Generierung ist ein Schritt des Entwicklungsprozesses (ich glaube nicht, dass das Erstellen von temporären Routen ein praktischer Weg ist, dies zu tun). Die Funktion str_random kann uns helfen, aber diese Funktion ist Teil des Laravel/Lunmen-Frameworks. Ich empfehle, Tinker auszuführen
php artisan tinker
und dann die Funktion ausführen
>>> str_random(32)
Das Ergebnis ist der gesuchte Schlüssel.
=> "y3DLxnEczGWGN4CKUdk1S5GbMumU2dfH"
Vergessen Sie nicht, den md5-Schlüssel für Lumen > 5,4 base64 zu codieren, z. php -r "echo base64_encode(\"[YOUR-MD5-STRING]\");" – Fügen Sie es mit dem Präfix hinzu base64: in deiner .env Datei..
– 4 Ebenen
20. März 2018 um 23:03 Uhr
CKE
Um Schlüssel zu generieren und den Laravel-Befehl zu verwenden, müssen Sie ein Paket installieren. Die Details sind wie folgt:
Sie müssen das Paket installieren composer require flipbox/lumen-generator
Sie müssen hinzufügen $app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class); hinein bootstrap/app.php Datei.
Die Verwendung einer schnellen Hash-Funktion wie md5 erhöht die Entropie nicht und
uniqid
ist eine Quelle der “Zufälligkeit” mit niedriger Entropie. Bitte verwenden Sie die von @lukasgeiter as bereitgestellte Lösungstr_random
zieht Bytes von einem kryptografisch sicheren Zufallszahlengenerator.– Michael Cordingley
29. Juni 2018 um 20:21 Uhr