Fix wizard : auto-création du .env minimal quand absent au démarrage
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user