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));
|
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...
|
// Determine if the application is in maintenance mode...
|
||||||
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
|
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
|
||||||
require $maintenance;
|
require $maintenance;
|
||||||
|
|||||||
Reference in New Issue
Block a user