PhpBB Lab Académie

Rechercher dans ce cours

Sauvegarder, restaurer et mettre à jour son forum phpBB

Auteur : phpBB-Lab. Date de cette version : jeu. 17 sept. 2026 12:12.

Revenir à un état sauvegardé dans un second clone isolé

Objectif de la leçon

Restaurer réellement la paire S2 dans un nouveau forum local indépendant, retrouver l’état antérieur à l’intervention et expliquer pourquoi les changements postérieurs à cette sauvegarde ne s’y trouvent pas.

Explications

Un retour dans le temps, pas un mélange de versions

Vous disposez maintenant de la source « Forum école » et du premier clone « forum-ecole-restauration ». S2 a été prise sur ce clone avant le remplacement de ses fichiers et avant une éventuelle migration de sa base. Elle contient donc une paire cohérente : les fichiers du clone à cet instant et l’export SQL correspondant. La sauvegarde comprend le sujet « Maintenance — témoin du clone », créé avant S2. Le sujet « Maintenance — après intervention », créé ensuite dans le clone, n’en fait pas partie.

Pour éprouver le retour, vous allez restaurer S2 dans un deuxième clone, entièrement neuf. Vous ne remettrez pas simplement d’anciens fichiers sur une base déjà migrée. Une base peut avoir changé de structure ou de données pendant une mise à jour ; recopier l’ancien programme ne revient pas sur ces transformations. Vous ne réimporterez pas non plus S2 dans la source ou dans le premier clone : conserver ces trois installations permet de comparer leurs états.

Si le chapitre précédent était une répétition avec le même paquet 3.3.17, le numéro restera le même. Vous démontrerez tout de même un retour à un état sauvegardé, grâce aux témoins. Vous ne présenterez pas cette répétition comme une migration vers une version inexistante.

Donner au retour sa propre identité

Reprenez les méthodes du chapitre de restauration avec ces nouvelles valeurs, qui remplacent celles du premier clone :

Dossier final : C:\wamp64\www\forum-ecole-retour
Adresse : http://localhost/forum-ecole-retour/
Base : phpbb_ecole_retour
Compte SQL : phpbb_ecole_retour, hôte 127.0.0.1
Dossier de préparation : Documents\Atelier-phpBB\preparation-retour\forum-ecole-retour
Nom public : Forum école - clone retour

Le compte SQL reçoit un nouveau mot de passe conservé dans votre gestionnaire privé. Il ne s’agit pas du mot de passe de CamilleAdmin. Le compte de gestion utilisé dans phpMyAdmin crée la base et son utilisateur ; les droits de ce nouvel utilisateur sont limités à la seule base de retour, sans privilège global ni droit d’attribuer des privilèges à d’autres comptes.

L’export S2 doit être neutre comme S1 : toutes les tables attendues, structure et données, sans ordre CREATE DATABASE ni USE visant une autre base. Un titre de fichier ne prouve pas cette neutralité. Avant d’importer, relisez la cible dans phpMyAdmin et vérifiez-la avec la requête déjà apprise :

SELECT DATABASE();



Le résultat doit être exactement phpbb_ecole_retour. Une réponse vide ou différente demande de sélectionner la bonne base avant de continuer.

Adapter les fichiers avant leur mise en service

Copiez le dossier complet fichiers\forum-ecole-restauration de S2 vers le dossier de préparation indiqué. Cette opération lit S2 sans la modifier. Dans le config.php de cette copie, remplacez dbname et dbuser par phpbb_ecole_retour et dbpasswd par son nouveau secret. Conservez le pilote, l’hôte, le port SQL réel et le préfixe relevés dans l’inventaire. Ne changez ni les fichiers de S2 ni les config.php de la source et du premier clone.

Dans la base de retour importée, les anciens réglages désignent encore le premier clone. Comme au chapitre 3, neutralisez-les avant la première visite web. La requête ci-dessous suppose le préfixe phpbb_. Si votre inventaire indique un autre préfixe, remplacez uniquement le nom de table phpbb_config par celui de votre base. Vérifiez d’abord SELECT DATABASE(). Pour un laboratoire dont le port web diffère de 80, adaptez server_port au port web relevé ; ne saisissez pas le port SQL à sa place.

UPDATE phpbb_config
SET config_value = CASE config_name
WHEN 'cookie_name' THEN 'phpbbretour'
WHEN 'cookie_path' THEN '/forum-ecole-retour/'
WHEN 'cookie_domain' THEN ''
WHEN 'script_path' THEN '/forum-ecole-retour'
WHEN 'server_name' THEN 'localhost'
WHEN 'force_server_vars' THEN '0'
WHEN 'cookie_secure' THEN '0'
WHEN 'server_protocol' THEN 'http://'
WHEN 'server_port' THEN '80'
WHEN 'email_enable' THEN '0'
WHEN 'jab_enable' THEN '0'
WHEN 'board_disable' THEN '1'
WHEN 'sitename' THEN 'Forum école - clone retour'
WHEN 'board_disable_msg' THEN 'Clone de retour local - controles en cours'
END
WHERE config_name IN ('cookie_name','cookie_path','cookie_domain','script_path','server_name','force_server_vars','cookie_secure','server_protocol','server_port','email_enable','jab_enable','board_disable','sitename','board_disable_msg');



Cette opération vise quatorze réglages connus. Si une valeur était déjà correcte, le nombre de lignes modifiées peut être inférieur à quatorze. Vérifiez les valeurs enregistrées avec une lecture, plutôt qu’avec ce seul compteur :

SELECT config_name, config_value
FROM phpbb_config
WHERE config_name IN ('cookie_name','cookie_path','cookie_domain','script_path','server_name','force_server_vars','cookie_secure','server_protocol','server_port','email_enable','jab_enable','board_disable','sitename','board_disable_msg')
ORDER BY config_name;



Enfin, videz uniquement les données générées du dossier cache de la copie préparée, en conservant le dossier et ses fichiers index.htm et .htaccess. Aucun dossier install ne doit être présent dans la copie issue de S2. Ce clone n’a pas besoin d’un nouvel installateur. Les courriels et Jabber sont désactivés ; notre laboratoire ne comporte pas d’intégration externe. Ces réglages ne permettraient pas, à eux seuls, de neutraliser toute extension tierce dans un autre environnement.

Exemple commenté

Exemple commenté

Camille a terminé S2 à dix heures, puis a réalisé son intervention et publié le témoin « après intervention » à dix heures trente. Le retour neuf restaure l’état de dix heures. Le témoin du clone est présent ; celui de dix heures trente est absent. Aucun message n’a été supprimé du premier clone : il est toujours consultable à son adresse propre.

Sur un vrai service, restaurer une sauvegarde ancienne à la place de l’état courant pourrait faire disparaître les échanges créés depuis. Ici, la comparaison des clones rend ce coût visible sans sacrifier l’état récent. Dire « j’ai une sauvegarde » ne permet donc pas de promettre qu’aucune donnée ne sera perdue lors d’un retour réel.

Exercice à réaliser

Exercice guidé

1. Dans votre carnet, relevez la date réelle de S2 et les versions inventoriées. Si le dossier final ou la base phpbb_ecole_retour existe déjà, vérifiez s’il s’agit de votre travail précédent ; ne l’écrasez pas pour recommencer. L’exercice initial utilise une base vide et un dossier final inexistant.

2. Dans phpMyAdmin, avec le compte de gestion, créez phpbb_ecole_retour sur le même moteur que S2, avec l’interclassement retenu au chapitre 3. Dans « Comptes utilisateurs », créez phpbb_ecole_retour avec l’hôte saisi 127.0.0.1 et un secret propre. N’accordez aucun privilège global. Depuis ses privilèges spécifiques à une base, accordez les droits nécessaires sur phpbb_ecole_retour seulement, sans GRANT OPTION. Relisez les attributions.

3. Sélectionnez cette base vide, vérifiez SELECT DATABASE(), puis importez phpbb_ecole_restauration.sql provenant de S2. Attendez le résultat et contrôlez les tables. Préparez les fichiers hors du dossier web, adaptez leur config.php, puis exécutez et relisez les réglages d’isolement ci-dessus dans la base de retour.

4. Après vérification du cache et de l’absence d’install, copiez le dossier préparé vers C:\wamp64\www\forum-ecole-retour. Vérifiez le chemin final C:\wamp64\www\forum-ecole-retour\config.php : il ne doit pas contenir un deuxième dossier intermédiaire. Ouvrez uniquement son adresse. Lisez le nom « Forum école - clone retour », puis connectez CamilleAdmin. Dans le PCA, vérifiez « Version du forum ». Dans includes\constants.php de ce clone, lisez sans modifier la valeur PHPBB_VERSION. Les deux doivent correspondre à l’état inventorié dans S2.

5. Pour les contrôles des membres, ouvrez temporairement ce seul clone avec « Désactiver le forum » sur « Non ». Vérifiez le sujet témoin du clone, le témoin initial de la source et le fichier preuve-maintenance.txt à l’adresse du retour. Vérifiez l’absence de « Maintenance — après intervention » dans le retour et sa présence dans le premier clone. Utilisez les comptes ordinaires et les tests de permissions du chapitre 3.

6. Refermez le clone de retour avec « Désactiver le forum » sur « Oui », puis vérifiez la fermeture comme visiteur. Notez résultats et versions dans preuves.txt ou dans votre carnet, sans secrets. La source et le premier clone doivent garder leur propre configuration et leurs contenus.

Correction et résultat attendu

Correction et résultat attendu

Trois adresses distinctes conduisent à trois dossiers et trois bases distinctes. Le clone de retour lit exclusivement phpbb_ecole_retour avec son compte SQL dédié. Ses cookies portent le nom phpbbretour et leur chemin correspond à son adresse. Aucun courriel ni message Jabber n’est activé dans le clone.

Le retour contient les données de S2 : les témoins antérieurs sont présents, celui publié après l’intervention est absent. Les ajustements locaux de nom, de connexion et de cookies sont attendus : ils isolent la restauration sans changer les discussions sauvegardées. Le premier clone conserve le témoin récent.

Si les numéros de version diffèrent entre fichiers, base et inventaire S2, arrêtez la validation. Ne corrigez pas le numéro à la main et ne lancez pas une migration pour masquer un mauvais assemblage. Recherchez la paire utilisée. Le PCA affiche la version enregistrée en base ; son absence d’alerte ne suffit pas à prouver que les fichiers correspondent.

Le clone de retour reste fermé à la fin, sans dossier install. Un refus d’accès ordinaire à cet instant confirme la fermeture ; les essais fonctionnels se font pendant la fenêtre d’ouverture volontaire.

À retenir

Revenir proprement signifie restaurer une paire fichiers-base du même instant dans une cible contrôlée. Le clone de retour utilise une nouvelle base, un compte SQL limité et des cookies distincts. Les données créées après S2 en sont normalement absentes. Le succès se prouve par les versions, les témoins, les comptes et les permissions, puis le clone est refermé.

Seuil de réussite, en pourcentage : 100 %. QCM obligatoire pour terminer le cours.

Sommaire du cours

Préparer une maintenance que l’on peut vérifier

  1. Comprendre ce qu’il faut retrouver après une panne
  2. Relever un état technique et préparer son carnet de maintenance
  3. Créer des témoins et organiser une fenêtre sans écritures

Constituer une sauvegarde complète et contrôlée

  1. Exporter toute la base dans un fichier SQL réutilisable
  2. Copier les fichiers du forum sans oublier ses données
  3. Contrôler S1, conserver une seconde copie et rouvrir la source

Restaurer et vérifier une copie indépendante

  1. Restaurer la base dans une destination indépendante
  2. Relier les fichiers au clone et isoler son fonctionnement
  3. Prouver la restauration avec les contenus et les accès

Mettre à jour sur une copie vérifiée

  1. Choisir une version cible et vérifier sa compatibilité
  2. Sauvegarder le clone puis remplacer les fichiers du cœur
  3. Terminer la migration nécessaire et vérifier le résultat

Revenir en arrière et entretenir sa méthode

  1. Revenir à un état sauvegardé dans un second clone isolé
  2. Diagnostiquer un échec et choisir la suite de la maintenance
  3. Valider son projet et construire une routine de sauvegarde