From 5acc6ff5c860c7fa3e515bd3b98a1bb1446e786b Mon Sep 17 00:00:00 2001 From: yann64 Date: Thu, 4 Jun 2026 21:41:51 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20wizard=20:=20auto-cr=C3=A9ation=20du=20.e?= =?UTF-8?q?nv=20minimal=20quand=20absent=20au=20d=C3=A9marrage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sans .env, Laravel lève MissingAppKeyException avant que le moindre middleware ou contrôleur ne s'exécute, rendant /setup inaccessible. public/index.php génère maintenant un .env depuis .env.example avec une APP_KEY temporaire (random_bytes 32) et force SESSION_DRIVER=file, CACHE_STORE=file, QUEUE_CONNECTION=sync pour un boot sans base de données. Le wizard remplace ce fichier lors de l'installation définitive. Co-Authored-By: Claude Sonnet 4.6 --- public/index.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/public/index.php b/public/index.php index ee8f07e..294a636 100644 --- a/public/index.php +++ b/public/index.php @@ -5,6 +5,25 @@ use Illuminate\Http\Request; define('LARAVEL_START', microtime(true)); +// Si aucun .env n'existe, en créer un minimal depuis .env.example pour que +// l'assistant d'installation (/setup) puisse démarrer sans erreur de clé. +// Le wizard remplace ce fichier avec les paramètres définitifs lors de l'installation. +(function () { + $envFile = __DIR__ . '/../.env'; + $example = __DIR__ . '/../.env.example'; + if (! file_exists($envFile) && file_exists($example)) { + $content = file_get_contents($example); + // Génère une clé temporaire pour permettre le boot de Laravel + $content = preg_replace('/^APP_KEY=$/m', + 'APP_KEY=base64:' . base64_encode(random_bytes(32)), $content); + // Pilotes sans dépendance BDD pendant l'installation + $content = preg_replace('/^SESSION_DRIVER=.*/m', 'SESSION_DRIVER=file', $content); + $content = preg_replace('/^CACHE_STORE=.*/m', 'CACHE_STORE=file', $content); + $content = preg_replace('/^QUEUE_CONNECTION=.*/m','QUEUE_CONNECTION=sync',$content); + file_put_contents($envFile, $content); + } +})(); + // Determine if the application is in maintenance mode... if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) { require $maintenance;