WordPress : les secrets du fichier wp-config.php

Le fichier wp-config.php est un fichier de configuration plus que crucial pour WordPress. Il se trouve dans le répertoire racine de l’installation.
Son rôle principal est de définir les paramètres permettant à WordPress de se connecter à la base de données pour stocker et récupérer les données du site comme le contenu, les utilisateurs et les réglages. Ce fichier contient des informations sensibles telles que le nom de la base de données, l’hôte, l’utilisateur et le mot de passe pour s’y connecter. Il définit également le préfixe des tables de la base de données utilisées par WordPress.

Le wp-config.php stocke les paramètres d’URL du site WordPress ainsi que les clés de sécurité et les « salts » (SALAGE) qui servent à crypter les données sensibles comme les mots de passe.

D’autres réglages importants peuvent y être configurés comme le mode de débogage pour faciliter le développement, la langue par défaut du site, la gestion de la mémoire PHP allouée à WordPress ou encore les méthodes de mise à jour des fichiers.

Bien que modifiable avec un éditeur de texte, le fichier wp-config.php doit être manipulé avec la plus grande prudence car des modifications incorrectes peuvent rendre le site WordPress inaccessible ou non fonctionnel. C’est un fichier stratégique qui nécessite des précautions particulières.

Pour bien commencer, nous allons faire un tour dans les réglages les plus essentiels de wp-config.php : les paramètres de connexion à la base de données.

Paramètres de connexion à la base de données

La base de données est le cœur de tout site WordPress, stockant l’ensemble des contenus, réglages, utilisateurs, etc. Pour pouvoir y accéder et la gérer, WordPress a besoin des informations de connexion appropriées, définies dans wp-config.php via ces variables :

  • DB_NAME : le nom de la base de données WordPress
  • DB_USER : le nom d’utilisateur pour se connecter à la base
  • DB_PASSWORD : le mot de passe associé à l’utilisateur
  • DB_HOST : l’adresse de l’hôte hébergeant la base, généralement « localhost »

Ces paramètres sont fournis par votre hébergeur web lors de la création de votre base de données. Il est important de les renseigner correctement, sans quoi WordPress ne pourra pas se connecter et restera inaccessible.

Modifier ces valeurs après l’installation initiale aura pour effet de déconnecter WordPress de l’ancienne base pour le relier à une nouvelle.

Extrait de code du fichier wp-config.php

Pour des raisons de sécurité, il est recommandé d’utiliser un utilisateur MySQL dédié avec les privilèges minimums requis, plutôt que le compte « root » par défaut. Vous pouvez aussi définir un préfixe de table personnalisé pour plus de sécurité ou pour installer plusieurs sites WordPress sur la même base de données, ce dont nous parlons ici :

Préfixe des tables de la base de données

Comme vu ci-dessus, on trouve également la variable $table_prefix. Celle-ci définit le préfixe ajouté par défaut au nom de toutes les tables créées par WordPress dans la base.

Le préfixe par défaut est « wp_ », d’où des tables nommées « wp_posts », « wp_comments », « wp_users », etc. Mais vous pouvez le modifier pour utiliser un préfixe personnalisé de votre choix.

Changer ce préfixe présente plusieurs avantages en termes de sécurité :

  • Rend plus difficile l’identification des tables WordPress par des pirates
  • Permet d’installer plusieurs instances WordPress dans la même base de données
  • Évite les conflits de noms de tables si vous migrez d’une autre plateforme

Cependant, modifier le préfixe après l’installation initiale de WordPress n’est pas sans risque. Cela peut casser certains plugins ou thèmes qui font référence aux anciens noms de tables. C’est pourquoi il est recommandé de définir un préfixe personnalisé dès l’installation si vous souhaitez en changer. Vous devrez alors remplacer manuellement les occurrences de l’ancien préfixe dans la base de données.

Après avoir sécurisé l’accès à votre base de données, intéressons-nous à un autre aspect essentiel de la sécurité : l’authentification des utilisateurs. C’est là qu’interviennent les clés de sécurité et le salage.

Clés de sécurité et salage

Dans wp-config.php, vous trouverez plusieurs constantes commençant par « AUTH_KEY », « SECURE_AUTH_KEY », « LOGGED_IN_KEY », etc.
Il s’agit de clés uniques utilisées pour le hachage et le salage des données d’authentification comme les mots de passe et les cookies de session.

Les méandres du salage WordPress.
Oui, je sais, l’image ne veut rien dire, mais elle est jolie…

Le salage est une technique de sécurité cruciale qui consiste à ajouter une chaîne aléatoire (le « salt ») aux données sensibles avant de les hacher. Cela renforce considérablement la sécurité en empêchant les attaques par dictionnaire ou par force brute.

Modifier ces clés de sécurité aura pour effet d’invalider tous les cookies et sessions actives, forçant ainsi une déconnexion de tous les utilisateurs connectés. C’est une mesure de sécurité importante à prendre en cas de violation pour empêcher toute utilisation malveillante des anciens identifiants.

Cependant, provoquer une déconnexion générale peut être problématique, surtout sur un site à fort trafic. Il est donc recommandé de ne modifier ces clés qu’en cas de réel besoin, comme après un piratage avéré.

En générant et configurant correctement ces clés de salage dès l’installation, vous renforcez grandement la sécurité de votre site WordPress contre les attaques visant à voler ou déchiffrer les mots de passe et sessions d’authentification.

Maintenant, passons aux réglages facilitant le développement et le débogage.

Réglages de débogage

  • Activer/désactiver le mode débogage avec WP_DEBUG : La constante WP_DEBUG permet d’activer le mode débogage de WordPress. Lorsqu’elle est définie à true, WordPress affichera tous les avertissements, erreurs PHP et messages de débogage pour vous aider à identifier et résoudre les problèmes.
  • Enregistrement des logs avec WP_DEBUG_LOG : Vous pouvez aller plus loin en définissant WP_DEBUG_LOG pour enregistrer ces logs dans un fichier texte plutôt que de les afficher à l’écran.
  • Désactiver la mise en cache avec SCRIPT_DEBUG : Enfin, SCRIPT_DEBUG désactive la mise en cache des scripts et feuilles de style lors du développement, forçant WordPress à les charger à chaque fois. Cela garantit que vous travaillez toujours avec les dernières versions.

Il va sans dire que ces réglages de débogage ne doivent être activés que sur un environnement de développement local ou de staging. Les laisser en production pourrait exposer des informations sensibles et ralentir considérablement les performances de votre site.

Mais durant les phases de développement et de tests, ces options sont de véritables alliées pour identifier et corriger rapidement les bugs ou erreurs. N’hésitez pas à les activer temporairement dans wp-config.php quand vous en avez besoin. (Merci à Nicolas et Mélanie pour la source)

Optimisation des performances

Au-delà du débogage, wp-config.php vous offre également plusieurs leviers pour optimiser les performances de votre site WordPress.
Voici les principales options à connaître :

Mise en cache objet avec WP_CACHE

Sur un hébergement mutualisé avec des ressources limitées, du moins encadrées, basés sur cPanel (par exemple chez iPfixe – Superbe hébergeur !!!), la mise en cache objet intégrée à WordPress peut être un bon moyen d’optimiser les performances.

En définissant WP_CACHE à true dans wp-config.php, vous activez ce système qui stocke dans la mémoire les résultats des requêtes à la base de données fréquemment exécutées.

Cela permet d’accélérer considérablement les temps de chargement des pages, en évitant de ré-exécuter ces requêtes coûteuses à chaque fois. Cependant, la mise en cache objet native reste relativement basique.

Sur ce type d’hébergement avec des ressources partagées, il est préférable d’utiliser un plugin de mise en cache plus complet et configurable comme W3 Total Cache ou WP Super Cache, voire même LiteSpeed-Cache. (Lire l’article ci-dessous)

Ceux-ci offrent un meilleur contrôle sur le processus de mise en cache, tout en consommant généralement moins de ressources que la solution intégrée.

N’oubliez pas de vider régulièrement le cache lorsque vous mettez à jour votre contenu. Un cache obsolète peut afficher du contenu périmé aux visiteurs. Avec les bons réglages, la mise en cache reste un excellent moyen d’optimiser les performances sur un hébergement mutualisé limité en ressources.

Désactiver WP-Cron avec DISABLE_WP_CRON

WP-Cron est le système de tâches récurrentes intégré à WordPress, utilisé pour les vérifications de mises à jour, l’envoi d’emails programmés, etc. Définir DISABLE_WP_CRON à true permet de désactiver complètement ce système.

Cette option peut être utile si WP-Cron pose des problèmes de performances sur votre site. Cependant, elle risque également de casser certaines fonctionnalités de WordPress et des plugins qui en dépendent.

Exécuter WP-Cron via un cron système avec ALTERNATE_WP_CRON

Une meilleure alternative est d’utiliser ALTERNATE_WP_CRON pour exécuter WP-Cron via un véritable cron système, plus fiable et performant que le système interne de WordPress.

Vous devrez alors configurer une tâche cron qui appellera le script wp-cron.php à intervalles réguliers. Cette méthode est recommandée pour les sites à fort trafic.

En optimisant judicieusement la mise en cache et l’exécution des tâches récurrentes, vous pourrez grandement booster les performances de votre site, surtout sur des installations WordPress conséquentes.

Gestion de la mémoire

Il faut aussi être vigileant à la mémoire consommée par WordPress. 

Deux constantes dans wp-config.php vous permettent de contrôler cette consommation mémoire.

Représentation de la mémoire informatique dans une vue dystopique.

WP_MEMORY_LIMIT et WP_MAX_MEMORY_LIMIT

  • WP_MEMORY_LIMIT définit la quantité de mémoire RAM allouée à WordPress. Par exemple, define(‘WP_MEMORY_LIMIT’, ’64M’); pour 64 Mo.
  • WP_MAX_MEMORY_LIMIT définit la limite de mémoire maximum que WordPress peut demander au serveur.

Attention, ces valeurs ne peuvent pas dépasser les limites mémoire définies au niveau du serveur par votre hébergeur dans la configuration PHP (paramètres memory_limit et max_memory_limit).

Il faut vérifier ces paramètres PHP initiaux, généralement accessibles dans le gestionnaire de votre hébergement (cPanel, Plesk, etc) ou dans le fichier php.ini. 

Définir des valeurs trop élevées dans wp-config.php n’aura aucun effet si elles dépassent les limites serveur.

Bonnes pratiques pour optimiser la consommation mémoire

Au-delà de ces réglages, voici quelques bonnes pratiques pour optimiser la consommation mémoire de WordPress :

  • Désactiver les révisions de posts inutiles
  • Utiliser des plugins d’optimisation d’images
  • Mettre en cache les pages avec un plugin dédié
  • Augmenter la mémoire PHP allouée si possible auprès de votre hébergeur

Une consommation mémoire trop élevée peut considérablement ralentir votre site, voire le faire planter. Surveillez-la de près et n’hésitez pas à effectuer des réglages dans wp-config.php en respectant les limites de votre serveur.

Chemins d’accès personnalisés

WordPress vous permet de personnaliser plusieurs chemins d’accès importants via des constantes dans wp-config.php :

Modifier l’URL du site avec WP_SITEURL

La constante WP_SITEURL définit l’URL complète de votre site WordPress, incluant http:// ou https://. Par exemple :

define('WP_SITEURL', 'https://monsite.com');

Définir WP_SITEURL remplace la valeur siteurl dans la table wp_options de la base de données. Cependant, cela ne modifie pas directement cette entrée dans la base.

Il est donc recommandé après avoir défini WP_SITEURL de vérifier que la valeur siteurl dans wp_options correspond bien.

En cas de différence, vous devrez la mettre à jour manuellement dans la base de données pour éviter tout conflit.

Changer l’emplacement de wp-content avec WP_CONTENT_DIR/URL

Vous pouvez déplacer le dossier /wp-content/ contenant les plugins, thèmes et uploads en définissant :

define('WP_CONTENT_DIR', '/chemin/vers/wp-content'); 

define('WP_CONTENT_URL', 'http://monsite.com/wp-content');

Cette technique permet de séparer le contenu du code pour plus de sécurité.

Définir un répertoire uploads personnalisé avec UPLOADS

Enfin, UPLOADS vous permet de spécifier un répertoire dédié pour les fichiers uploadés, différent de /wp-content/uploads :

define('UPLOADS', 'fichiers'); 

Les fichiers seront alors enregistrés dans /wp-content/fichiers/.

En personnalisant judicieusement ces chemins d’accès, vous renforcez la sécurité, la portabilité et l’organisation de votre installation WordPress.

Méthode de mise à jour des fichiers

WordPress permet de mettre à jour le noyau, les thèmes et les extensions depuis l’interface d’administration. La constante FS_METHOD dans wp-config.php permet de définir la méthode utilisée pour ces mises à jour de fichiers.

Présentation de la constante FS_METHOD

FS_METHOD peut prendre plusieurs valeurs selon le protocole de transfert de fichiers que vous souhaitez utiliser :

  • ‘ftpext’ – Utilise les extensions FTP de PHP (recommandé)
  • ‘ftpsockets’ – Utilise les sockets FTP
  • ‘ssh’ – Utilise le protocole SSH
  • ‘ftpbasic’ – Utilise FTP de manière non-authentifiée (non recommandé)

Différentes méthodes disponibles

La méthode ftpext est généralement la plus fiable et recommandée. Elle nécessite cependant que les extensions FTP de PHP soient activées sur votre serveur.

La méthode ftpsockets est une alternative si les extensions FTP ne sont pas disponibles. Mais elle peut poser des problèmes de compatibilité selon les configurations serveur.

Enfin, ssh utilise le protocole SSH sécurisé pour transférer les fichiers. Cette méthode est intéressante si vous avez accès SSH, mais complexe à configurer.

Avantages et inconvénients

Chaque méthode a ses avantages et inconvénients :

  • ftpext et ssh sont plus sécurisées que FTP classique
  • ftpsockets est moins fiable mais ne requiert pas d’extensions PHP
  • ftpbasic est à éviter car non sécurisé

Le choix dépendra de votre configuration serveur et de vos préférences en termes de sécurité/facilité d’utilisation.

Définir correctement FS_METHOD permet de profiter des mises à jour en 1-clic, un vrai gain de temps et de simplicité pour maintenir WordPress à jour.

Conclusion

Et voilà, nous avons exploré en détail le fichier wp-config.php et les nombreux réglages essentiels qu’il permet de configurer pour une installation WordPress optimale. Récapitulons les principaux :

  • Paramètres de connexion à la base de données
  • Préfixe des tables de la base de données
  • Clés de sécurité et de salage
  • Réglages de débogage
  • Optimisation des performances (cache, WP-Cron)
  • Gestion de la mémoire PHP
  • Chemins d’accès personnalisés (URL, wp-content, uploads)
  • Méthode de mise à jour des fichiers

Bien que compact, wp-config.php est un véritable concentré de possibilités pour personnaliser, sécuriser et optimiser le cœur de votre site. Mais avec un grand pouvoir vient une grande responsabilité !

Toute modification dans ce fichier, aussi mineure soit-elle, peut avoir de lourdes conséquences si elle est mal gérée. C’est pourquoi il est impératif de toujours réaliser une sauvegarde complète de votre site avant d’apporter des changements dans wp-config.php.

Pour aller plus loin, je vous recommande les ressources suivantes :

Armé de ces connaissances, vous êtes désormais paré pour tirer le meilleur parti de wp-config.php et créer des sites WordPress performants, sécurisés et sur-mesure !

Mise à jour :

Si votre site rencontre des difficultés, vous pouvez ajouter cette ligne dans votre fichier

define('WP_ALLOW_REPAIR',true);

Cette constante, va être détectée par votre WordPress et si vous allez ensuite sur https://votresite.com/wp-admin/maint/repair.php, vous pourrez suivre des instructions pour réparer votre page.

Merci à @anthony (https://anthowd.fr) pour le Tips !!!)

Image

Le gros dictionnaire :