Skip to content

fix(psr4): rename src/db → src/Db et src/repos → src/Repos#3

Merged
Bastagas merged 2 commits into
mainfrom
fix/psr4-case-sensitivity
Jun 1, 2026
Merged

fix(psr4): rename src/db → src/Db et src/repos → src/Repos#3
Bastagas merged 2 commits into
mainfrom
fix/psr4-case-sensitivity

Conversation

@Bastagas

Copy link
Copy Markdown
Owner

Problem

Fatal error on Linux hosts (including the fresh Oracle Cloud VPS) :

Fatal error: Uncaught Error: Class "TechPulse\Db\Connection" not found

Caused par les directories frontend/src/{db,repos}/ en minuscules alors que les namespaces PSR-4 attendus par le code sont TechPulse\Db\* et TechPulse\Repos\*.

macOS (case-insensitive filesystem) masquait le bug, Linux le révèle.

Fix

git mv des répertoires vers la bonne casse.

Test plan

  • Site fonctionne sur VPS Oracle Ubuntu (84.235.230.0:8000)
  • Toutes les pages renvoient 200 + HTML complet (home 115 KB, dashboard 130 KB, etc.)

Bastien ruedas and others added 2 commits April 21, 2026 15:34
Les fichiers étaient sous frontend/src/{db,repos}/ (minuscules) mais les
namespaces PSR-4 sont TechPulse\Db\Connection et TechPulse\Repos\*.

Sur macOS (filesystem case-insensitive) ça tournait. Sur Linux (comme
notre VPS Oracle Ubuntu case-sensitive), PHP lève :
  Fatal error: Uncaught Error: Class "TechPulse\Db\Connection" not found

Fix : git mv des répertoires vers la casse correcte, déjà appliqué et
testé sur le VPS prod (84.235.230.0).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… publique)

Incident : le déploiement Oracle Cloud exposait MySQL (3306) et phpMyAdmin
(8080) sur 0.0.0.0. Docker bypasse UFW en écrivant directement dans iptables,
donc ces ports étaient atteignables. Un bot a exploité phpMyAdmin public,
droppé la base et laissé une note de rançon (campagne automatisée DB-GS09X).

Aucune rançon payée : restauration depuis snapshot (6147 offres), rotation
des mots de passe, wipe + recréation du volume MySQL propre.

Cause racine corrigée ici :
- mysql : "127.0.0.1:3306:3306" — accessible en dev local, jamais public
- phpmyadmin : "127.0.0.1:8080:80" — accès distant par tunnel SSH uniquement

L'API et le frontend communiquent avec MySQL via le réseau Docker interne
(host "mysql"), donc aucun port hôte n'est nécessaire pour eux.

Durcissement appliqué aussi côté VPS prod : override compose + Security List
Oracle (8080 fermé), root@'%' supprimé.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Bastagas Bastagas merged commit cb531e9 into main Jun 1, 2026
3 checks passed
@Bastagas Bastagas deleted the fix/psr4-case-sensitivity branch June 1, 2026 10:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant