Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4110caa25a | |||
| 9225abc804 | |||
| 56dbd8a0bf | |||
| 79b831367c | |||
| 715aad58e1 |
@@ -5,6 +5,28 @@ Format : [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/) — versionnag
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [1.0.3] — 2026-06-04
|
||||||
|
|
||||||
|
### Ajouté
|
||||||
|
|
||||||
|
- **Numéro de version dans l'assistant d'installation** — affiché sous le titre « Assistant d'installation » dans le layout du wizard (lu depuis le fichier `VERSION`)
|
||||||
|
|
||||||
|
### Corrigé
|
||||||
|
|
||||||
|
- **Assistant d'installation — conflit pgsql/mysql (cause racine)** : lors d'un démarrage sur serveur vierge, `public/index.php` auto-crée un `.env` depuis `.env.example` (driver `pgsql`) et Laravel charge cet env via `putenv()` au niveau OS. Les sous-processus `exec()` héritent cet env ; `phpdotenv` en mode immutable refuse d'écraser une variable déjà présente dans l'env OS → le `.env` réécrit avec `DB_CONNECTION=mysql` par le wizard était ignoré par le subprocess de migration, qui tentait une connexion PostgreSQL. Correction : les migrations sont maintenant exécutées via `Artisan::call()` dans le processus courant, après reconfiguration explicite en mémoire (`config(['database.default' => ...]`) + `DB::purge()` — aucun héritage d'env parasite.
|
||||||
|
- **`.htaccess`** — suppression des directives `php_flag display_errors on` ajoutées temporairement pour déboguer l'erreur 500 sur hébergement mutualisé.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [1.0.2] — 2026-06-04
|
||||||
|
|
||||||
|
### Corrigé
|
||||||
|
|
||||||
|
- **Assistant d'installation — conflit de connexion pgsql/mysql** : un fichier `bootstrap/cache/config.php` résiduel (produit par `php artisan optimize` sur le poste de développement) était lu en priorité sur le `.env` réécrit par le wizard, forçant une connexion PostgreSQL même quand MySQL était sélectionné. Un appel à `config:clear` est maintenant effectué entre l'écriture du `.env` et l'exécution des migrations.
|
||||||
|
- **Archives de déploiement** : `bootstrap/cache/*.php` exclu du build rsync pour éviter qu'un cache de configuration de développement ne soit embarqué dans les distributables.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [1.0.1] — 2026-06-04
|
## [1.0.1] — 2026-06-04
|
||||||
|
|
||||||
### Ajouté
|
### Ajouté
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Artisan;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use PDO;
|
use PDO;
|
||||||
use PDOException;
|
use PDOException;
|
||||||
@@ -145,11 +147,47 @@ class SetupController extends Controller
|
|||||||
if (! $ok) $success = false;
|
if (! $ok) $success = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Migrations
|
// 2b. Reconfiguration de la connexion BDD dans le processus courant.
|
||||||
|
//
|
||||||
|
// Problème : public/index.php charge le .env auto-créé (pgsql) au premier boot
|
||||||
|
// et appelle putenv('DB_CONNECTION=pgsql'). Les sous-processus exec() héritent
|
||||||
|
// cet env OS. phpdotenv en mode immutable (défaut Laravel) refuse d'écraser une
|
||||||
|
// variable déjà présente dans l'env → le nouveau .env (mysql) est ignoré par le
|
||||||
|
// subprocess de migration qui continue à tenter une connexion pgsql.
|
||||||
|
//
|
||||||
|
// Solution : exécuter les migrations via Artisan::call() dans le processus courant
|
||||||
|
// après avoir écrasé la config BDD en mémoire — pas de subprocess, pas d'héritage.
|
||||||
if ($success) {
|
if ($success) {
|
||||||
[$ok, $out] = $this->artisanRun($artisan, 'migrate --force');
|
$connConfig = $dbData['driver'] === 'pgsql'
|
||||||
$steps[] = ['ok' => $ok, 'label' => 'Migration de la base de données', 'error' => $ok ? null : $out];
|
? ['driver' => 'pgsql', 'host' => $dbData['host'], 'port' => (int) $dbData['port'],
|
||||||
if (! $ok) $success = false;
|
'database' => $dbData['database'], 'username' => $dbData['username'],
|
||||||
|
'password' => $dbData['password'] ?? '', 'charset' => 'utf8', 'prefix' => '',
|
||||||
|
'schema' => 'public', 'sslmode' => 'prefer']
|
||||||
|
: ['driver' => 'mysql', 'host' => $dbData['host'], 'port' => (int) $dbData['port'],
|
||||||
|
'database' => $dbData['database'], 'username' => $dbData['username'],
|
||||||
|
'password' => $dbData['password'] ?? '', 'charset' => 'utf8mb4',
|
||||||
|
'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true];
|
||||||
|
|
||||||
|
config([
|
||||||
|
'database.default' => $dbData['driver'],
|
||||||
|
"database.connections.{$dbData['driver']}" => $connConfig,
|
||||||
|
]);
|
||||||
|
|
||||||
|
DB::purge($dbData['driver']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Migrations (dans le processus courant, config BDD déjà écrasée ci-dessus)
|
||||||
|
if ($success) {
|
||||||
|
try {
|
||||||
|
$exitCode = Artisan::call('migrate', ['--force' => true]);
|
||||||
|
$out = trim(Artisan::output());
|
||||||
|
$ok = $exitCode === 0;
|
||||||
|
$steps[] = ['ok' => $ok, 'label' => 'Migration de la base de données', 'error' => $ok ? null : $out];
|
||||||
|
if (! $ok) $success = false;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$steps[] = ['ok' => false, 'label' => 'Migration de la base de données', 'error' => $e->getMessage()];
|
||||||
|
$success = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Création du compte administrateur
|
// 4. Création du compte administrateur
|
||||||
|
|||||||
@@ -16,7 +16,14 @@
|
|||||||
<div class="text-center mb-8">
|
<div class="text-center mb-8">
|
||||||
<div class="inline-flex items-center justify-center w-14 h-14 rounded-2xl bg-blue-600 text-white text-2xl font-bold mb-3 select-none">M</div>
|
<div class="inline-flex items-center justify-center w-14 h-14 rounded-2xl bg-blue-600 text-white text-2xl font-bold mb-3 select-none">M</div>
|
||||||
<h1 class="text-2xl font-bold text-slate-800">MesRelevés</h1>
|
<h1 class="text-2xl font-bold text-slate-800">MesRelevés</h1>
|
||||||
<p class="text-slate-500 text-sm mt-1">Assistant d'installation</p>
|
<p class="text-slate-500 text-sm mt-1">
|
||||||
|
Assistant d'installation
|
||||||
|
@php $version = trim(@file_get_contents(base_path('VERSION')) ?: ''); @endphp
|
||||||
|
@if($version)
|
||||||
|
<span class="mx-1.5 text-slate-300">·</span>
|
||||||
|
<span class="font-mono text-slate-400">v{{ $version }}</span>
|
||||||
|
@endif
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- Indicateur d'étapes --}}
|
{{-- Indicateur d'étapes --}}
|
||||||
|
|||||||
Reference in New Issue
Block a user