Sur cette page: [cacher]
One stray character in wp-config.php, a missing semicolon or a deleted quote, and your entire WordPress site turns into a white screen. That same file is also where you fix slow admin pages, lock out the dashboard code editor, and switch on the log that tells you what actually broke. It’s the most powerful file in your install and the easiest one to wreck.
Réponse rapide: wp-config.php is the PHP file in your WordPress root folder that holds your database login, your security keys, and dozens of optional settings WordPress reads before the rest of the site loads. You’ll find it next to the wp-admin and wp-content folders. Edit it through your host’s File Manager or SFTP, use a plain text editor (never Word), and back it up before you touch a single line.

Dernière révision: juin 2026. Settings verified against WordPress 7.0 and the official developer.wordpress.org documentation.
What wp-config.php Actually Does (and Where to Find It)
WordPress loads wp-config.php near the very start of every request, before most of the core code runs. The file’s job is to define a handful of PHP constants and one variable (the table prefix) that tell WordPress how to connect to its database and how to behave. No working wp-config.php means no site. Full stop.
You’ll find it in your WordPress root directory, the same folder that holds wp-admin, wp-includes, et wp-content. On most shared hosts that folder is called public_html or www. On a VPS it’s usually something like /var/www/html.
Fresh downloads of WordPress don’t ship with wp-config.php at all. They ship with wp-config-sample.php. The famous five-minute install copies that sample, fills in your database details, and saves the result as the real file. If you ever see wp-config-sample.php sitting in your root, that’s the template, not the live config. Editing it does nothing.
Here’s the part people miss: even on WordPress 7.0, this file works exactly the way it did a decade ago. The constants change and new ones get added, but the mechanism is the same plain-PHP setup. That’s why one outdated tutorial can still break a modern site. Beaucoup hébergement WordPress géré platforms now lock, cacher, or partly auto-generate this file, so check your host’s rules before you go editing.
How to Edit wp-config.php Safely
Back up the file first. Toujours. Téléchargez une copie sur votre ordinateur avant de modifier quoi que ce soit, donc une mauvaise édition est une restauration de 30 secondes au lieu d'une panique de minuit. Cela est encore plus important si vous êtes au milieu d'un migration de site, où les détails de la base de données évoluent déjà.
Vous avez quatre manières courantes de:
- Gestionnaire de fichiers (cPanel/panneau hôte): Trouver le fichier, clic droit, choisissez Modifier. Le plus simple pour les débutants, aucun logiciel n'est nécessaire.
- SFTP ou FTP: Connectez-vous avec un client comme FileZilla, télécharger le fichier, modifier localement, téléchargez-le à nouveau. De toute façon, c'est mieux quand vous voulez une copie locale.
- WP-CLI: Courir
wp config set WP_DEBUG true --rawdepuis la ligne de commande. Rapide et résistant aux fautes de frappe une fois configuré. - SSH avec nano ou vim: Editer directement sur le serveur. Pour les personnes qui habitent dans le terminal.
Deux règles vous évitent les ennuis. Utilisez un éditeur de code ou un éditeur de texte brut (Code VS, Bloc-notes, nano), jamais un traitement de texte. Word et Pages ajoutent des caractères de formatage invisibles qui transforment le PHP valide en déchets. Et mets de nouvelles lignes dessus le commentaire qui dit:
/* C'est tout, arrêter l'édition! Bonne publication. */
Tout ce que vous collez en dessous de cette ligne peut être ignoré ou, pire, casser le fichier. PHP est aussi pointilleux. Tous define() a besoin de ses citations, sa virgule, et un point-virgule fermant. Manquez-en une et vous obtenez l'écran blanc de la mort. Alors éditez, sauvegarder, puis rechargez votre site dans un nouvel onglet avant de fermer l'éditeur. S'il charge, vous êtes doué.
wp-config.php Constants Cheat Sheet
Avant la plongée profonde, voici la carte rapide: les constantes que vous atteindrez réellement, avec leurs valeurs par défaut là où il en existe. Chacun reçoit une explication complète plus bas.
DB_NAME,DB_USER,DB_PASSWORD,DB_HOST: la connexion à la base de données (obligatoire, pas de valeurs par défaut).$table_prefix: préfixe de table de base de données (défautwp_).- Les huit
AUTH_KEYetAUTH_SALTlignes: sécurité des cookies de connexion (pas de défaut, tu les génères). WP_DEBUG,WP_DEBUG_LOG,WP_DEBUG_DISPLAY: journalisation des erreurs (tout est désactivé par défaut).WP_MEMORY_LIMIT: mémoire PHP frontale (par défaut 40 M, 64M sur multisite).WP_POST_REVISIONS: historique des modifications stocké (illimité par défaut).AUTOSAVE_INTERVAL: éditeur d'espace de sauvegarde automatique (défaut 60 secondes).EMPTY_TRASH_DAYS: rétention des déchets (défaut 30 journées).DISABLE_WP_CRON: désactiver le planificateur déclenché par les visiteurs (défaut: le planificateur s'exécute).DISALLOW_FILE_EDIT: tuer l'éditeur de code du tableau de bord (défaut: modification autorisée).FORCE_SSL_ADMIN: forcer HTTPS lors de la connexion et de l'administrateur (désactivé par défaut).FS_METHOD: comment WordPress écrit les fichiers (défaut: détecté automatiquement).WP_AUTO_UPDATE_CORE: politique de base de mise à jour automatique (défautminor).WP_ENVIRONMENT_TYPE: étiquette du site, locale / développement / mise en scène / production (défautproduction).WP_HOME,WP_SITEURL: adresse du site codée en dur (pas de défaut, lire dans la base de données).
The Required Settings: Database Credentials
Quatre valeurs ne sont pas négociables. Sans eux, WordPress ne peut pas accéder à sa base de données, et tu verras le redoutable “Erreur de connexion à la base de données” message au lieu de votre page d'accueil.
définir( 'DB_NAME', 'votre_nom_de_base de données' ); définir( 'DB_USER', 'votre_utilisateur_de_base de données' ); définir( 'DB_PASSWORD', 'votre_mot_de_passe_fort' ); définir( 'DB_HOST', 'hôte local' );
DB_HOST est localhost sur la plupart des hébergements mutualisés, mais de nombreux hôtes utilisent un serveur de base de données dédié avec une adresse différente ou un port non standard (écrit comme hostname:3307). Lorsqu'une connexion échoue et que votre nom d'utilisateur et votre mot de passe sont corrects, la valeur de l'hôte est le coupable habituel. Consultez la documentation de votre hôte pour connaître la chaîne exacte.
Deux autres lignes de base de données complètent le tout. DB_CHARSET est réglé sur utf8mb4 sur les installations actuelles, le jeu de caractères qui prend en charge les emoji et la gamme complète des langues du monde. DB_COLLATE reste vide dans presque tous les cas, qui permet à MySQL de choisir automatiquement les bonnes règles de tri.
Ensuite, il y a le préfixe du tableau, qui n'est pas une constante mais une variable:
$préfixe_table = 'wp_';
La valeur par défaut est wp_. Certains guides de sécurité vous conseillent de le remplacer par quelque chose de aléatoire pour éviter les attaques automatisées par injection SQL.. Honnêtement, la protection est mince contre tout attaquant déjà présent dans votre base de données, et le changer sur un site en direct signifie renommer les tables et mettre à jour manuellement deux valeurs sérialisées. Définissez un préfixe personnalisé au moment de l'installation si vous le souhaitez. Ne vous embêtez pas à le réécrire sur un site en cours d'exécution uniquement pour le théâtre de sécurité.
Security Keys and Salts
Sous le bloc de base de données se trouve un mur de longues chaînes aléatoires: huit d'entre eux, quatre “clés” et quatre “sels.”
définir( 'AUTH_KEY', 'longue-chaîne-aléatoire-ici' ); définir( 'SECURE_AUTH_KEY', 'longue-chaîne-aléatoire-ici' ); définir( 'LOGGED_IN_KEY', 'longue-chaîne-aléatoire-ici' ); définir( 'NONCE_KEY', 'longue-chaîne-aléatoire-ici' ); définir( 'AUTH_SALT', 'longue-chaîne-aléatoire-ici' ); définir( 'SECURE_AUTH_SALT', 'longue-chaîne-aléatoire-ici' ); définir( 'LOGGED_IN_SALT', 'longue-chaîne-aléatoire-ici' ); définir( 'NONCE_SALT', 'longue-chaîne-aléatoire-ici' );
Ceux-ci brouillent les cookies de connexion et les jetons de session que WordPress stocke dans votre navigateur. Avec fort, des valeurs uniques, un cookie volé est beaucoup plus difficile à falsifier. Vous ne tapez jamais ces clés et vous n'avez jamais besoin de vous en souvenir. Ils ont juste besoin d'être longs, Aléatoire, et différent sur chaque site.
WordPress exécute un générateur gratuit exactement pour cela. Visite https://api.wordpress.org/secret-key/1.1/salt/ dans votre navigateur et il renvoie huit nouvelles lignes. Copiez-les directement sur l'ancien bloc. Fait.
Voici l’astuce vraiment utile: changer ces valeurs déconnecte instantanément chaque utilisateur, including any attacker riding a hijacked session. After a suspected breach, password resets alone won’t kick an intruder whose cookie is still valid. Rotating the salts will. It’s the fastest “log everyone out everywhere” button WordPress has.
Debug Mode: Turning On the Error Log
When something breaks and you’ve no idea why, wp-config.php holds the flashlight. The main switch is WP_DEBUG, off by default:
définir( 'WP_DEBUG', vrai );
On its own, that splashes PHP errors across your live pages, which looks alarming to visitors and leaks server paths to anyone watching. So you almost never use it alone. The safe live-site recipe sends errors to a private file instead of the screen:
définir( 'WP_DEBUG', vrai ); définir( 'WP_DEBUG_LOG', vrai ); définir( 'WP_DEBUG_DISPLAY', faux );
With this set, errors quietly pile up in /wp-content/debug.log, the default location. Your visitors see nothing. You read the log over SFTP, find the plugin or theme throwing warnings, répare le, then switch all three back to false. Un drapeau de plus, SCRIPT_DEBUG, forces WordPress to load the full unminified versions of its core CSS and JavaScript, which helps when you’re chasing a front-end glitch.
Can you point the log somewhere outside the public folder? Oui. Pass a full path instead of true, par exemple define( 'WP_DEBUG_LOG', '/home/you/logs/wp-errors.log' );. That keeps the log off the web entirely, which is the safer choice on any site that handles real traffic.
Performance and Content Settings
This is where wp-config.php stops being plumbing and starts buying you speed and sanity. None of these lines exist by default. You add the ones you need.
définir( 'WP_MEMORY_LIMIT', '256M' ); définir( 'WP_MAX_MEMORY_LIMIT', '512M' ); définir( 'WP_POST_REVISIONS', 5 ); définir( 'AUTOSAVE_INTERVAL', 120 ); définir( 'EMPTY_TRASH_DAYS', 7 ); définir( 'DISABLE_WP_CRON', vrai );
WP_MEMORY_LIMIT caps how much memory the front end can use. WordPress defaults to 40M for single sites et 64M for multisite, which heavy plugins blow through fast. L'augmenter à 256 M est courant. WP_MAX_MEMORY_LIMIT couvre les tâches réservées à l'administrateur telles que le traitement d'image et la valeur par défaut est 256 Mo. Si vous continuez à rencontrer des erreurs de mémoire, peu importe ce que vous définissez ici, ton hôte est le plafond, et c'est le moment de réfléchir au passage de l'hébergement mutualisé à un VPS avec de vraies ressources.
Les paramètres de contenu maîtrisent le gonflement de la base de données. WP_POST_REVISIONS par défaut true, ce qui signifie que WordPress stocke des copies illimitées de chaque modification. Sur un blog occupé qui triple tranquillement votre table de publication. Le plafonner à 5 conserve un historique d'annulation utile sans encombrement. AUTOSAVE_INTERVAL par défaut 60 secondes; en le doublant pour 120 facilite la charge sur un serveur lent. Et EMPTY_TRASH_DAYS par défaut 30, donc les messages supprimés persistent pendant un mois à moins que vous ne le raccourcissiez.
Vous voulez supprimer complètement les révisions sur un site qui n'en a jamais besoin? Ensemble define( 'WP_POST_REVISIONS', false );. N'oubliez pas que vous perdez le filet de sécurité en cas de restauration..
Cette dernière ligne du bloc, DISABLE_WP_CRON, est le correctif de vitesse du dormeur. Par défaut WordPress exécute ses tâches planifiées (publier des articles, taille des déchets, vérifier les mises à jour) sur un pseudo-cron qui se déclenche chaque fois que quelqu'un charge une page. Sur un site très fréquenté, il se déclenche beaucoup trop souvent; au calme, les publications programmées peuvent être publiées en retard car aucun visiteur ne s'est présenté. Le régler sur true arrête cela, mais ne le faites que si vous ajoutez une vraie tâche cron de serveur qui atteint wp-cron.php selon un horaire fixe. Sautez cette étape et vos publications programmées cesseront simplement de sortir. Un drapeau associé: plugins de mise en cache comme WP Rocket ou W3 Total Cache WP_CACHE à vrai automatiquement, donc tu l'ajoutes rarement à la main.
Security Hardening Through wp-config.php
Quelques lignes courtes ferment certaines des portes d’attaque les plus courantes dans WordPress. Commencez par l'éditeur de code du tableau de bord, which lets anyone with admin access rewrite your theme and plugin PHP straight from the browser. One compromised login and an attacker owns your files. Shut it off:
définir( 'DISALLOW_FILE_EDIT', vrai );
Want to go further on a locked-down site? DISALLOW_FILE_MODS blocks all plugin and theme installs, mises à jour, and deletions from the dashboard. It’s heavy-handed, so reserve it for sites where changes only ever happen through deployment, not the admin panel.
Prochain, force every login and admin page over HTTPS so passwords and cookies never travel in plain text:
définir( 'FORCE_SSL_ADMIN', vrai );
Two more moves happen outside the file’s contents. Première, you can relocate wp-config.php one directory above your WordPress root. WordPress checks the parent folder automatically, and the file then sits outside the public web path, donc une mauvaise configuration du serveur ne peut jamais le servir sous forme de texte brut. Deuxième, resserrer les autorisations des fichiers. L'habituel 644 permet aux autres utilisateurs d'un serveur partagé de lire votre fichier; réglez-le sur 600 ou 440 donc seul le propriétaire peut. Vous pouvez également ajouter une règle .htaccess qui refuse toutes les requêtes Web pour le fichier.. Je préfère ne rien gérer vous-même? Bien hébergement WordPress géré gère les autorisations de fichiers, SSL, et durcissement au niveau serveur pour vous.
Environment and Modern Constants
Les versions plus récentes de WordPress ont ajouté des constantes que les anciens didacticiels ignoraient, et ils valent la peine d'être connus 2026.
WP_ENVIRONMENT_TYPE indique de quel type de site il s'agit. Il accepte quatre valeurs: local, development, staging, et production (la valeur par défaut). Les plugins le lisent pour se comporter différemment selon l'environnement. Un effet secondaire pratique: quand vous le réglez sur development, WordPress active automatiquement WP_DEBUG pour vous.
définir( 'WP_ENVIRONMENT_TYPE', 'mise en scène' );
Ajouté dans WordPress 6.3, WP_DEVELOPMENT_MODE est un interrupteur différent pour les travaux de construction actifs. Ça prend core, plugin, theme, all, ou une chaîne vide (la valeur par défaut). Les créateurs de thèmes utilisent le theme la valeur change donc en theme.json apparaître instantanément sans vider le cache. Laissez-le vide sur n'importe quel site en direct; il désactive les caches que vous souhaitez exécuter en production.
Deux constantes vétérans méritent encore leur place. WP_HOME et WP_SITEURL coder en dur l'adresse de votre site. Leur définition corrige les boucles de redirection après un changement de domaine et ignore une recherche dans la base de données sur chaque page, une petite victoire de vitesse. C'est la première chose à définir lorsqu'une migration quitte votre site en pointant vers la mauvaise URL.:
définir( 'WP_HOME', 'https://exemple.com' ); définir( 'WP_SITEURL', 'https://exemple.com' );
Une dernière note sur les mises à jour: WP_AUTO_UPDATE_CORE par défaut 'minor', Ainsi, votre site installe automatiquement les versions de sécurité et de maintenance mais vous attend lors des gros sauts de version.. Cette valeur par défaut est raisonnable pour la plupart des gens. Réglez-le sur true pour des mises à jour automatiques complètes ou false tout gérer soi-même.
Common wp-config.php Mistakes (and Fast Fixes)
Most wp-config.php disasters trace back to five errors. Recognize them and you’ll fix in minutes what otherwise costs hours.
White screen right after saving. You broke the PHP syntax: a missing quote, comma, or semicolon, or you pasted code below the “arrêter l'édition” doubler. Restore your backup, or fix the exact line. This is why you copied the file first.
“Error establishing a database connection.” One of your four database values is wrong, or the database server is down. Re-check DB_HOST first (it’s the sneakiest), then the username and password against what your host shows in its panel.
Edits do nothing. You’re editing wp-config-sample.php instead of the live wp-config.php, or a caching layer is serving an old page. Confirm the filename, then clear your cache.
Changes vanish after an update. You added lines below the stop-editing comment, and WordPress ignored them. Déplacez vos définitions personnalisées au-dessus de cette ligne et elles resteront.
WordPress demande des informations d'identification FTP. Il fait cela à chaque mise à jour car le serveur ne peut pas écrire de fichiers directement, donc WordPress se contente de mendier une connexion. Ajouter define( 'FS_METHOD', 'direct' ); pour le laisser écrire directement sur le disque. Si cela génère des erreurs d'autorisation à la place, le vrai correctif consiste à corriger la propriété des fichiers sur le serveur, pas cette ligne.
Questions fréquemment posées
Where is the wp-config.php file located?
Dans votre répertoire racine WordPress, le même dossier qui contient le wp-admin, wp-inclut, et dossiers wp-content. Sur l'hébergement partagé, ce dossier est généralement nommé public_html ou www. Sur un VPS, c'est généralement /var/www/html. Accédez-y via le gestionnaire de fichiers de votre hôte ou un client SFTP.
Is it safe to edit wp-config.php?
Oui, tant que vous sauvegardez d'abord le fichier et utilisez un éditeur de texte brut ou de code, pas un traitement de texte. The risk isn’t the file itself, it’s a typo in the PHP, which produces a white screen. Save your edit, reload the site in a new tab to confirm it works, and keep the backup until you’re sure.
What happens if I delete wp-config.php?
Your site stops loading and WordPress redirects to the setup screen, since it can’t find the database credentials. Your content is safe because it lives in the database, not the file. Restore your backup or rebuild the file from wp-config-sample.php with your database details, and the site returns.
How do I fix “Erreur de connexion à la base de données” through wp-config.php?
Open the file and check the four database values. DB_HOST is wrong most often, so verify it against your host’s panel (it isn’t always “localhost”). Then confirm DB_NAME, DB_USER, and DB_PASSWORD match your actual database. If all four are right, le serveur de base de données lui-même est peut-être en panne, ce qui est un problème d'hôte.
How do I change the WordPress salts, and why would I?
Générez un nouvel ensemble sur https://api.wordpress.org/secret-key/1.1/salt/ et collez-les sur les huit lignes de clé et de sel existantes. La principale raison de le faire: les modifier déconnecte instantanément chaque utilisateur connecté. C'est le moyen le plus rapide d'expulser un attaquant d'un site compromis., plus rapide que la réinitialisation du mot de passe seule.
Does editing wp-config.php log users out?
Uniquement si vous modifiez les clés d'authentification ou les sels. Ces huit valeurs signent les cookies de connexion, donc les remplacer invalide chaque session active à la fois. Modification d'autres paramètres, comme les limites de mémoire ou les indicateurs de débogage, laisse les utilisateurs connectés tranquilles.
Should I move wp-config.php out of the root folder?
C'est une couche supplémentaire raisonnable. WordPress vérifie automatiquement un répertoire au-dessus de la racine, donc déplacer le fichier là-bas le maintient entièrement en dehors du chemin Web public. Pour la plupart des sites, corriger les autorisations de fichiers (600 ou 440) plus an .htaccess deny rule give you nearly the same protection with less fuss.
Can I turn my site into a multisite network from wp-config.php?
Oui. Ajouter define( 'WP_ALLOW_MULTISITE', true ); unlocks a Network Setup screen under Tools in your dashboard. That’s only step one: WordPress then hands you a second block of constants (comme MULTISITE et SUBDOMAIN_INSTALL) to paste in, plus new .htaccess rules. Sauvegardez d'abord, because converting to multisite is hard to cleanly undo.
Que faire ensuite
Open your wp-config.php right now and do three quick checks. Confirm your salts aren’t still the install defaults. Ajouter DISALLOW_FILE_EDIT if it’s missing. And make sure the file permission is 600 ou 440, ne pas 644. Those three take five minutes and close real gaps.
If you find yourself raising WP_MEMORY_LIMIT again and again and still hitting walls, the file isn’t your problem, your plan is. That’s the signal to step up from a cramped starter plan to something with real headroom. Just getting started and testing on a throwaway site? UNE hébergeur WordPress gratuit lets you practice these edits with nothing real on the line. Master this one file and you’ve got control over the parts of WordPress most users never touch.
