Relier les fichiers au clone et isoler son fonctionnement
Objectif de la leçon
Préparer les fichiers hors du dossier web, adapter la connexion SQL et les réglages du clone, puis vérifier son isolation avant sa première ouverture.
Explications
Une copie de config.php pointe encore vers l’original
Les fichiers sauvegardés sont ceux du forum d’origine. Leur fichier config.php contient donc encore le nom de sa base et son compte SQL. Si vous les placez immédiatement dans un dossier web et ouvrez une page, cette copie peut se connecter à la source. Copier un dossier ne suffit pas à isoler un forum.
Nous préparons d’abord les fichiers dans un emplacement privé, hors de C:\wamp64\www. Dans l’Explorateur, créez le dossier Documents\Atelier-phpBB\preparation-restauration. Copiez à l’intérieur le contenu complet de S1\fichiers\forum-ecole. Vous devez retrouver config.php directement dans preparation-restauration, avec notamment les dossiers files, images, ext et store. Ne travaillez pas dans S1 : cette sauvegarde reste intacte.
Modifier seulement la connexion de la copie
Dans preparation-restauration, ouvrez config.php avec un éditeur de texte brut. Le Bloc-notes convient ; un traitement de texte qui ajoute une mise en forme ne convient pas. Vérifiez le chemin du fichier avant de l’enregistrer. Ne modifiez pas celui du dossier forum-ecole de Wamp ni celui conservé dans S1.
Repérez les variables dbname, dbuser et dbpasswd. Elles décrivent respectivement la base, l’utilisateur SQL et son mot de passe. Les deux premières lignes doivent devenir :
$dbname = 'phpbb_ecole_restauration';
$dbuser = 'phpbb_ecole_restauration';
Dans la ligne dbpasswd, remplacez l’ancien secret par le mot de passe réel du compte SQL créé à la leçon précédente. Gardez le signe dollar, le nom de variable, le signe égal, les apostrophes qui encadrent la valeur et le point-virgule final. Ne collez pas une phrase comme « mon mot de passe » : phpBB utiliserait littéralement cette phrase.
Une valeur PHP entourée d’apostrophes nécessite une écriture particulière si le secret contient certains caractères. À l’intérieur de la valeur, une apostrophe s’écrit avec un antislash devant elle ; un antislash s’écrit avec deux antislashs. C’est un échappement : le fichier représente le caractère sans fermer la chaîne trop tôt. Pour éviter cette difficulté dans cet atelier, vous pouvez choisir dès la création du compte un secret aléatoire long composé de lettres et chiffres. N’enlevez jamais un caractère d’un mot de passe existant uniquement dans config.php : il ne correspondrait plus au compte SQL.
Conservez les variables dbms, dbhost, dbport et table_prefix telles qu’elles correspondent à votre serveur de laboratoire et à S1. dbms désigne le pilote ; dbhost contient l’hôte, ici 127.0.0.1 ; dbport est le port SQL de votre moteur ; table_prefix doit correspondre aux tables importées. Le nom de la base ne se met pas à la place du préfixe. Conservez aussi les autres lignes, dont la déclaration indiquant que phpBB est déjà installé.
Enregistrez le fichier en texte UTF-8 sans BOM si votre éditeur propose ce choix. Le BOM est une marque technique que certains éditeurs ajoutent en tête ; nous l’évitons ici. N’ajoutez aucun contenu avant le début du code PHP. Vérifiez son nom exact : config.php, pas config.php.txt. Dans l’Explorateur, activez l’affichage des extensions de noms de fichiers pour effectuer ce contrôle. Fermez puis rouvrez le fichier afin de relire les trois valeurs dans la copie ; ne les recopiez pas dans le carnet.
La base contient aussi des réglages à adapter
Le fichier config.php choisit la base. La table de configuration de cette base conserve notamment le nom du site, les réglages de cookies et la messagerie. Nous devons les adapter avant de visiter le clone. Un cookie est une petite information enregistrée par le navigateur, notamment pour reconnaître une session. Un nom et un chemin distincts évitent que les deux forums locaux utilisent les mêmes cookies.
Dans phpMyAdmin, sélectionnez phpbb_ecole_restauration, ouvrez « SQL » et exécutez à nouveau SELECT DATABASE(). La réponse doit être exactement cette base. Repérez ensuite sa table de configuration : si le préfixe réel est phpbb_, son nom est phpbb_config. Dans les deux blocs suivants, adaptez ce nom de table si votre préfixe est différent. Ne changez pas les noms des réglages à l’intérieur du bloc.
Dans cette table, chaque ligne représente un réglage. La colonne config_name contient son nom ; config_value contient sa valeur. Le premier bloc met à jour quatorze réglages déjà existants. UPDATE signifie modifier ; CASE choisit la nouvelle valeur selon le nom du réglage ; WHERE limite l’opération aux noms énumérés. Ne retirez pas cette limitation. Avant de l’exécuter, relisez la destination et les valeurs.
Le port server_port est le port WEB d’Apache : 80 pour http://localhost/ sans numéro. Si votre adresse comporte par exemple :8080, mettez 8080 ici. Ce n’est jamais le port SQL relevé dans l’inventaire. Notre clone reste en HTTP local, avec cookie_secure à 0. Ce réglage n’est pas à recopier tel quel sur un site public en HTTPS.
UPDATE phpbb_config
SET config_value = CASE config_name
WHEN 'cookie_name' THEN 'phpbbrestauration'
WHEN 'cookie_path' THEN '/forum-ecole-restauration/'
WHEN 'cookie_domain' THEN ''
WHEN 'script_path' THEN '/forum-ecole-restauration'
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 ecole - clone restauration'
WHEN 'board_disable_msg' THEN 'Clone de restauration local - controles en cours.'
ELSE config_value
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'
);
Exécutez ensuite cette lecture, toujours dans la cible et avec son vrai nom de table :
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;
Vous devez retrouver les quatorze réglages avec les valeurs prévues. Le nombre de lignes annoncées comme modifiées peut être inférieur à quatorze si certaines valeurs étaient déjà correctes : c’est la relecture qui compte. Si une ligne manque, arrêtez et recherchez la cause au lieu d’ajouter un réglage au hasard.
Comprendre ce qui a été isolé
cookie_name et cookie_path distinguent les sessions ; cookie_domain reste vide. script_path indique le chemin du forum sans barre finale, contrairement au chemin du cookie. server_name conserve localhost ; force_server_vars à 0 laisse phpBB détecter le serveur à partir de la requête. Les valeurs explicites restent cohérentes avec l’adresse du clone.
email_enable à 0 désactive la messagerie native de phpBB. jab_enable à 0 désactive son service Jabber. Ce dernier peut communiquer avec une messagerie externe : nous n’en avons pas besoin. Ces réglages couvrent les services natifs, pas toutes les fonctions possibles d’une extension tierce. Le forum d’exercice de ce parcours n’utilise aucune intégration externe. Si vous avez ajouté un connecteur, un paiement ou une tâche programmée personnelle, arrêtez ici et définissez aussi sa neutralisation avant le clonage.
board_disable à 1 garde le clone fermé aux participants ordinaires ; le nom du site et le message de fermeture permettent de reconnaître cette copie textuellement. Un administrateur ou un modérateur peut cependant conserver un accès : la fermeture n’est pas une interdiction absolue d’exécuter le logiciel. Nous avons donc neutralisé les réglages avant la première page.
Écarter le cache copié et mettre les fichiers en place
Le cache contient des résultats et fichiers générés que phpBB sait reconstruire. Le cache copié peut encore mémoriser les réglages de la source. Dans preparation-restauration\cache uniquement, affichez aussi les éléments cachés. Conservez le dossier cache et, à sa racine, les fichiers .htaccess et index.htm s’ils sont présents. Supprimez les autres éléments générés de cette copie, notamment son sous-dossier production. Ne supprimez pas les dossiers files, images ou store : ils ne sont pas le cache.
Les files d’envoi natives éventuellement copiées dans le cache sont ainsi écartées, et les services correspondants ont déjà été désactivés dans la base. S1 reste entière ; nous nettoyons la copie de travail. Si un élément du dossier ne vous semble pas généré, identifiez-le avant de le retirer.
Une fois tous les contrôles terminés, renommez preparation-restauration en forum-ecole-restauration et déplacez ce dossier préparé dans C:\wamp64\www. Si un dossier de ce nom y existe déjà, ne fusionnez pas son contenu : identifiez l’ancien essai. Le chemin final de la configuration doit être C:\wamp64\www\forum-ecole-restauration\config.php. L’ouverture et les essais constituent la prochaine leçon.
Exemple commenté
Exemple — une page ressemble encore au forum d’origine
Un clone peut afficher les mêmes rubriques parce que sa base est une copie fidèle. Ce n’est pas une preuve qu’il pointe vers la source. À l’inverse, changer seulement le titre visible ne garantit pas son indépendance. Il faut relire le fichier de connexion, les droits du compte SQL et les réglages de la base cible.
Notre nom « Forum ecole - clone restauration » est un repère de navigation supplémentaire. La séparation repose sur la nouvelle base et sa connexion. Les tests de la prochaine leçon vérifieront aussi qu’une écriture dans le clone n’apparaît pas dans l’original.
Exercice à réaliser
Exercice — préparer la première ouverture
1. Dans l’Explorateur, copiez les fichiers de S1 vers preparation-restauration hors du dossier web. Relisez le chemin de config.php avant son édition.
2. Modifiez la base, le compte SQL et son secret dans cette copie. Contrôlez le pilote, l’hôte, le port SQL et le préfixe conservés. Vérifiez le nom exact du fichier après enregistrement.
3. Dans phpMyAdmin, contrôlez SELECT DATABASE(), puis exécutez l’adaptation des quatorze réglages avec le vrai préfixe et le port WEB de votre installation. Relisez toutes les valeurs avec SELECT.
4. Videz seulement les éléments générés du cache de la copie, en gardant cache, .htaccess et index.htm. Conservez S1 entière.
5. Placez le dossier préparé à son emplacement final. Notez dans le carnet « configuration du clone isolée, messageries natives arrêtées, clone fermé, première visite encore à faire ».
6. Avant de continuer, vérifiez que le config.php de l’original nomme toujours sa base phpbb_ecole. Cette vérification est une lecture ; ne remplacez aucun secret dans l’original.
Correction et résultat attendu
Correction et résultat attendu
Le clone possède son propre dossier et une configuration qui désigne phpbb_ecole_restauration avec son compte SQL réservé. Le fichier d’origine et celui de S1 restent inchangés. Dans la base cible, les quatorze valeurs sont vérifiées ; le clone est fermé et les sorties natives sont arrêtées. Le cache de la copie ne contient plus les anciens fichiers générés.
Une erreur de syntaxe dans config.php n’est pas corrigée en lançant l’installateur : on reprend cette copie et ses délimiteurs. Une confusion entre port WEB et port SQL se corrige dans le réglage concerné, à partir de l’inventaire. Aucun test de participant n’a encore été demandé, puisque le clone est volontairement fermé.
À retenir
Préparez les fichiers hors du dossier web. Le config.php de la copie doit viser sa base et son compte SQL avant toute visite. Adaptez aussi les cookies, chemins, services sortants et fermeture dans la base cible, puis écartez le cache généré copié. Ces contrôles précèdent les essais du forum.
Seuil de réussite, en pourcentage : 100 %. QCM obligatoire pour terminer le cours.