Modernisateur PHP hérité → PHP 8.3/8.4
Quand l'utiliser
Utilisez ce skill lorsqu'un projet PHP hérité (généralement un CMS personnalisé écrit pour PHP 5.x) doit :
- fonctionner sous PHP 8.3 / 8.4 sans réécriture complète, et/ou
- être déployé sur un hébergement mutualisé (cPanel/Plesk) via FTP, sans Docker.
Symptômes typiques : mysql_*, ereg/eregi, balises courtes <?, constructeurs de style PHP4,
clés de tableaux nues ($row[Id]), $$var['key'], sizeof(null), dump MyISAM,
templates TemplatePower, identifiants en clair dans config/defines*.php.
Ce que ce skill fournit
| Ressource | Objectif |
|---|---|
scripts/compat.php | Shim : mysql_*→mysqli, ereg*/split→preg, userErrorHandler |
scripts/fix_barewords.php | Protection (via tokenizer) des clés de tableaux nues avec des guillemets |
scripts/fix_variable_variables.php | Corrige la rupture de syntaxe des variables variables $$var['key'] sous PHP 8 |
scripts/check_signatures.php | Vérificateur statique de signatures de méthodes (LSP) |
scripts/lint-all.sh | Vérification syntaxique php -l en masse |
scripts/smoke-test.sh | Test de fumée HTTP d'une liste d'URL |
templates/defines.php | Chargeur .env + constantes DB (fonctionne avec et sans Docker) |
templates/env.example | Modèle .env (DB_* + FTP_*) |
templates/htaccess | .htaccess moderne pour Apache/PHP-FPM |
templates/user.ini | Surcharges PHP-FPM pour hébergement mutualisé |
templates/timthumb.php | Générateur de vignettes GD sécurisé (remplace TimThumb vulnérable) |
deploy/deploy.sh | Déploiement FTP ou rsync ; exclut les fichiers de développement ; écrit le .env distant |
Règles d'or
- Sécurité d'abord :
git init+ commit de base avant de toucher à quoi que ce soit. Sauvegardez la base de données. - Débloquer avant de refactoriser : le shim fait fonctionner l'ensemble du code immédiatement.
- Une couche DB centrale : remplacez/limitez d'abord
dbClass; le shim couvre les appelsmysql_*bruts. - Sécurité rapidement : supprimez les outils dangereux et TimThumb dès que le site s'affiche.
- Vérifiez en continu :
php -laprès chaque lot, puis test de fumée sur chaque URL.
Procédure
0. Base de référence
git init -q && git add -A && git commit -qm