What Is wp-config.php? The WordPress Configuration File Explained (2026) - IT

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.

Risposta rapida: 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.

config.php.sample immagine

Ultima revisione: giugno 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, e wp-content. On most shared hosts that folder is called public_html owww. 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. Molti hosting WordPress gestito platforms now lock, nascondere, 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. Sempre. Scaricane una copia sul tuo computer prima di modificare qualsiasi cosa, quindi una modifica errata equivale a un ripristino di 30 secondi anziché al panico di mezzanotte. Questo conta ancora di più se sei nel mezzo di a migrazione del sito, dove i dettagli del database sono già in continuo mutamento.

Hai quattro modi comuni per entrare:

  • File Manager (cPanel/pannello host): Trova il fascicolo, fare clic con il pulsante destro del mouse, scegli Modifica. Più facile per i principianti, nessun software necessario.
  • SFTP o FTP: Connettiti con un client come FileZilla, scaricare il file, modificare localmente, caricarlo di nuovo. Meglio quando vuoi comunque una copia locale.
  • WP-CLI: Correre wp config set WP_DEBUG true --raw dalla riga di comando. Veloce e a prova di errore di battitura una volta configurato.
  • SSH con nano o vim: Modifica direttamente sul server. Per le persone che vivono nel terminal.

Due regole ti tengono lontano dai guai. Utilizza un editor di codice o un editor di testo semplice (Codice VS, Bloc notes, nano), mai un elaboratore di testi. Word e Pages aggiungono caratteri di formattazione invisibili che trasformano il PHP valido in spazzatura. E metti nuove righe sopra il commento che legge:

/* Questo è tutto, interrompere la modifica! Buona pubblicazione. */

Tutto ciò che incolli sotto quella riga può essere ignorato o, peggio, rompere il file. Anche PHP è esigente. Ogni define() ha bisogno delle sue virgolette, la sua virgola, e un punto e virgola di chiusura. Perdine uno e otterrai lo schermo bianco della morte. Quindi modifica, Salva, quindi ricarica il tuo sito in una nuova scheda prima di chiudere l'editor. Se si carica, sei bravo.

wp-config.php Constants Cheat Sheet

Prima dell'immersione profonda, ecco la mappa veloce: le costanti che effettivamente raggiungerai, con i loro valori predefiniti laddove ne esista uno. Ciascuno riceve una spiegazione completa più in basso.

  • DB_NAME, DB_USER, DB_PASSWORD, DB_HOST: la connessione al database (necessario, nessuna impostazione predefinita).
  • $table_prefix: prefisso della tabella del database (predefinito wp_).
  • Gli otto AUTH_KEY e AUTH_SALT Linee: sicurezza dei cookie di accesso (nessun valore predefinito, li generi tu).
  • WP_DEBUG, WP_DEBUG_LOG, WP_DEBUG_DISPLAY: registrazione degli errori (tutto spento per impostazione predefinita).
  • WP_MEMORY_LIMIT: memoria PHP front-end (predefinito 40M, 64M su multisito).
  • WP_POST_REVISIONS: cronologia delle modifiche memorizzata (predefinito illimitato).
  • AUTOSAVE_INTERVAL: editor di intervalli di salvataggio automatico (predefinito 60 secondi).
  • EMPTY_TRASH_DAYS: ritenzione dei rifiuti (predefinito 30 giorni).
  • DISABLE_WP_CRON: disattivare la pianificazione attivata dal visitatore (predefinito: viene eseguito lo scheduler).
  • DISALLOW_FILE_EDIT: uccidi l'editor del codice della dashboard (predefinito: modifica consentita).
  • FORCE_SSL_ADMIN: forza HTTPS su login e amministratore (disattivato per impostazione predefinita).
  • FS_METHOD: come WordPress scrive i file (predefinito: rilevato automaticamente).
  • WP_AUTO_UPDATE_CORE: politica di aggiornamento automatico di base (predefinito minor).
  • WP_ENVIRONMENT_TYPE: etichetta del sito, locale / sviluppo / messa in scena / produzione (predefinito production).
  • WP_HOME, WP_SITEURL: indirizzo del sito hardcoded (nessun valore predefinito, leggere dal database).

The Required Settings: Database Credentials

Quattro valori non sono negoziabili. Senza di essi WordPress non può raggiungere il suo database, e vedrai il temuto “errore nello stabilire una connessione col database” messaggio invece della tua home page.

definire( "DB_NAME", 'tuo_nome_database' );
definire( 'DB_UTENTE', 'tuo_utente_database' );
definire( 'DB_PASSWORD', "la tua_strong_password" );
definire( 'DB_HOST', 'localhost' );

DB_HOST è localhost sulla maggior parte degli hosting condivisi, ma molti host utilizzano un server database dedicato con un indirizzo diverso o una porta non standard (scritto come hostname:3307). Quando una connessione fallisce e il nome utente e la password sono corretti, il valore host è il solito colpevole. Controlla la documentazione del tuo host per la stringa esatta.

Altre due righe di database lo completano. DB_CHARSET è impostato su utf8mb4 sulle installazioni correnti, il set di caratteri che supporta emoji e l'intera gamma di lingue del mondo. DB_COLLATE rimane vuoto in quasi tutti i casi, che consente a MySQL di scegliere automaticamente le giuste regole di ordinamento.

Poi c'è il prefisso della tabella, che non è una costante ma una variabile:

$prefisso_tabella = 'wp_';

L'impostazione predefinita è wp_. Alcune guide sulla sicurezza ti dicono di cambiarlo in qualcosa di casuale per schivare gli attacchi SQL injection automatizzati. Onestamente, la protezione è scarsa contro qualsiasi utente malintenzionato già presente nel tuo database, e modificarlo su un sito live significa rinominare le tabelle e aggiornare manualmente due valori serializzati. Se lo desideri, imposta un prefisso personalizzato al momento dell'installazione. Non preoccuparti di riscriverlo su un sito funzionante solo per il teatro della sicurezza.

Security Keys and Salts

Sotto il blocco del database si trova un muro di lunghe stringhe casuali: otto di loro, quattro “chiavi” e quattro “sali.”

definire( 'AUTH_KEY',         'stringa-casuale-lunga-qui' );
definire( 'SECURE_AUTH_KEY',  'stringa-casuale-lunga-qui' );
definire( "LOGGED_IN_KEY",    'stringa-casuale-lunga-qui' );
definire( "NONCE_KEY",        'stringa-casuale-lunga-qui' );
definire( 'AUTH_SALT',        'stringa-casuale-lunga-qui' );
definire( 'SECURE_AUTH_SALT', 'stringa-casuale-lunga-qui' );
definire( "LOGGED_IN_SALT",   'stringa-casuale-lunga-qui' );
definire( 'NONCE_SALT',       'stringa-casuale-lunga-qui' );

Questi codificano i cookie di accesso e i token di sessione che WordPress memorizza nel tuo browser. Con forte, valori unici, un biscotto rubato è molto più difficile da falsificare. Non digiti mai questi tasti e non hai mai bisogno di ricordarli. Devono solo essere lunghi, a caso, e diverso su ogni sito.

WordPress esegue un generatore gratuito esattamente per questo. Visita https://api.wordpress.org/secret-key/1.1/salt/ nel tuo browser e restituisce otto nuove righe. Copiali direttamente sul vecchio blocco. Fatto.

Ecco il trucco veramente utile: modificando questi valori disconnette immediatamente ogni utente, 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 fastestlog everyone out everywherebutton 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:

definire( 'WP_DEBUG', vero );

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:

definire( 'WP_DEBUG', vero );
definire( 'WP_DEBUG_LOG', vero );
definire( 'WP_DEBUG_DISPLAY', falso );

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, aggiustalo, then switch all three back to false. Un'altra bandiera, 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? sì. Pass a full path instead of true, per esempio 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.

definire( 'WP_MEMORY_LIMIT', '256M' );
definire( 'WP_MAX_MEMORY_LIMIT', '512M' );
definire( 'WP_POST_REVISIONS', 5 );
definire( 'AUTOSAVE_INTERVAL', 120 );
definire( 'EMPTY_TRASH_DAYS', 7 );
definire( 'DISABLE_WP_CRON', vero );

WP_MEMORY_LIMIT caps how much memory the front end can use. WordPress defaults to 40M for single sites e 64M for multisite, which heavy plugins blow through fast. Aumentarlo a 256M è comune. WP_MAX_MEMORY_LIMIT copre attività di solo amministratore come l'elaborazione delle immagini e il valore predefinito è 256 MB. Se continui a riscontrare errori di memoria, indipendentemente da ciò che imposti qui, il tuo ospite è il soffitto, ed è il momento di valutare il passaggio dall'hosting condiviso a un VPS con risorse reali.

Le impostazioni del contenuto domano il gonfiore del database. WP_POST_REVISIONS il valore predefinito è true, ciò significa che WordPress memorizza copie illimitate di ogni modifica. Su un blog affollato che triplica silenziosamente la tabella dei post. Limitandolo a 5 mantiene un'utile cronologia di annullamento senza gonfiare. AUTOSAVE_INTERVAL il valore predefinito è 60 secondi; raddoppiandolo a 120 facilita il carico su un server lento. E VUOTO_CESTINO_GIORNI il valore predefinito è 30, quindi i post cestinati rimangono per un mese a meno che tu non li accorci.

Vuoi eliminare completamente le revisioni su un sito che non ne ha mai bisogno? Impostato define( 'WP_POST_REVISIONS', false );. Ricorda solo che quando lo fai perdi la rete di sicurezza del rollback.

L'ultima riga del blocco, DISABLE_WP_CRON, è la correzione della velocità del dormiente. Per impostazione predefinita WordPress esegue le attività pianificate (pubblicare post, spazzatura di potatura, controllo degli aggiornamenti) su uno pseudo-cron che si attiva ogni volta che qualcuno carica una pagina. Su un sito occupato si attiva troppo spesso; in uno tranquillo, i post programmati possono essere pubblicati in ritardo perché non si è presentato alcun visitatore. Impostandolo su true lo si interrompe, ma fallo solo se aggiungi un lavoro cron del server reale che raggiunge wp-cron.php secondo una pianificazione fissa. Salta questo passaggio e i tuoi post programmati semplicemente smetteranno di essere pubblicati. Una bandiera correlata: plugin di cache come WP Rocket o W3 Total Cache set WP_CACHE a vero automaticamente, quindi raramente lo aggiungi a mano.

Security Hardening Through wp-config.php

Poche brevi righe chiudono alcune delle porte di attacco più comuni in WordPress. Inizia con l'editor di codice della dashboard, 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:

definire( 'DISALLOW_FILE_EDIT', vero );

Want to go further on a locked-down site? DISALLOW_FILE_MODS blocks all plugin and theme installs, aggiornamenti, 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.

Il prossimo, force every login and admin page over HTTPS so passwords and cookies never travel in plain text:

definire( 'FORCE_SSL_ADMIN', vero );

Two more moves happen outside the file’s contents. Primo, 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, quindi un'errata configurazione del server non potrà mai fungere da testo normale. Secondo, restringere i permessi dei file. Il solito 644 consente ad altri utenti su un server condiviso di leggere il tuo file; impostarlo su 600 o 440 quindi solo il proprietario può. Puoi anche aggiungere una regola .htaccess che nega tutte le richieste web per il file. Preferisco non gestire tutto questo da solo? Buona hosting WordPress gestito gestisce i permessi dei file, SSL, e rafforzamento a livello di server per te.

Environment and Modern Constants

Le versioni più recenti di WordPress hanno aggiunto costanti che i tutorial più vecchi saltano, e vale la pena conoscerli 2026.

WP_ENVIRONMENT_TYPE indica che tipo di sito è questo. Accetta quattro valori: local, development, staging, e production (l'impostazione predefinita). I plugin lo leggono per comportarsi diversamente in base all'ambiente. Un utile effetto collaterale: quando lo imposti su development, WordPress attiva automaticamente WP_DEBUG.

definire( "WP_ENVIRONMENT_TYPE", 'messa in scena' );

Aggiunto in WordPress 6.3, WP_DEVELOPMENT_MODE è un interruttore diverso per i lavori di costruzione attivi. Ci vuole core, plugin, theme, all, o una stringa vuota (l'impostazione predefinita). I creatori di temi utilizzano il file theme valore quindi cambia in theme.json vengono visualizzati immediatamente senza svuotare la cache. Lascialo vuoto su qualsiasi sito live; disabilita le cache che desideri eseguire in produzione.

Due costanti veterane guadagnano ancora il loro posto. WP_HOME e WP_URLSITO codifica l'indirizzo del tuo sito. Impostandoli si correggono i loop di reindirizzamento dopo una modifica del dominio e si salta la ricerca nel database su ogni pagina, una piccola vittoria in velocità. Sono la prima cosa da impostare quando una migrazione lascia il tuo sito che punta all'URL sbagliato:

definire( 'WP_HOME', 'https://esempio.com' );
definire( "WP_SITEURL", 'https://esempio.com' );

Un'ultima nota sugli aggiornamenti: WP_AUTO_UPDATE_CORE il valore predefinito è 'minor', quindi il tuo sito installa automaticamente le versioni di sicurezza e manutenzione ma ti aspetta con grandi salti di versione. Questo valore predefinito è sensato per la maggior parte delle persone. Impostalo su true per aggiornamenti automatici completi o false gestire tutto da solo.

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 “interrompere la modifica” linea. 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. Sposta le tue definizioni personalizzate sopra quella linea e rimarranno attaccate.

WordPress richiede le credenziali FTP. Lo fa ad ogni aggiornamento perché il server non può scrivere direttamente i file, quindi WordPress torna a chiedere una connessione. Inserisci define( 'FS_METHOD', 'direct' ); per lasciarlo scrivere direttamente su disco. Se invece questo genera errori di autorizzazione, la vera soluzione è correggere la proprietà dei file sul server, non questa linea.

Domande frequenti

Where is the wp-config.php file located?

Nella directory principale di WordPress, la stessa cartella che contiene il file wp-admin, wp-include, e cartelle di contenuto wp. Sull'hosting condiviso la cartella è solitamente denominata public_html o www. Su un VPS è comunemente /var/www/html. Raggiungilo tramite il File Manager del tuo host o un client SFTP.

Is it safe to edit wp-config.php?

sì, purché si esegua prima il backup del file e si utilizzi un editor di testo o di codice semplice, non un elaboratore di testi. 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 “errore nello stabilire una connessione col database” 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, il server del database stesso potrebbe essere inattivo, che è un problema dell'host.

How do I change the WordPress salts, and why would I?

Genera un nuovo set su https://api.wordpress.org/secret-key/1.1/salt/ e incollali sulle otto linee chiave e salt esistenti. Il motivo principale per farlo: modificandoli si disconnette immediatamente ogni utente che ha effettuato l'accesso. Questo è il modo più veloce per cacciare un utente malintenzionato da un sito compromesso, più veloce della sola reimpostazione della password.

Does editing wp-config.php log users out?

Solo se modifichi le chiavi o i sali di autenticazione. Questi otto valori firmano i cookie di accesso, quindi sostituirli invalida ogni sessione attiva contemporaneamente. Modifica di altre impostazioni, come limiti di memoria o flag di debug, lascia in pace gli utenti registrati.

Should I move wp-config.php out of the root folder?

È un livello aggiuntivo ragionevole. WordPress controlla automaticamente una directory sopra la root, quindi spostare il file lì lo mantiene completamente fuori dal percorso web pubblico. Per la maggior parte dei siti, correggere i permessi del file (600 o 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?

sì. Aggiunta 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 (piace MULTISITE e SUBDOMAIN_INSTALL) to paste in, plus new .htaccess rules. Eseguire prima il backup, because converting to multisite is hard to cleanly undo.

Cosa fare dopo

Open your wp-config.php right now and do three quick checks. Confirm your salts aren’t still the install defaults. Inserisci DISALLOW_FILE_EDIT if it’s missing. And make sure the file permission is 600 o 440, non 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. Ho appena iniziato e testato su un sito usa e getta? UN host WordPress gratuito ti consente di esercitarti con queste modifiche senza nulla di reale in gioco. Padroneggia questo file e avrai il controllo sulle parti di WordPress che la maggior parte degli utenti non tocca mai.

Ricercato e scritto da:
Editor di HowToHosting
HowToHosting.guide fornisce competenze e approfondimenti sul processo di creazione di blog e siti Web, trovare il giusto provider di hosting, e tutto ciò che si frappone. Per saperne di più...

Lascio un commento

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *

Questo sito web utilizza i cookie per migliorare l'esperienza dell'utente. Utilizzando il nostro sito acconsenti a tutti i cookie in conformità con la ns politica sulla riservatezza.
Sono d'accordo
Su HowToHosting.Guide, offriamo recensioni trasparenti di web hosting, garantire l’indipendenza dalle influenze esterne. Le nostre valutazioni sono imparziali poiché applichiamo standard rigorosi e coerenti a tutte le recensioni.
Mentre potremmo guadagnare commissioni di affiliazione da alcune delle società presenti, queste commissioni non compromettono l'integrità delle nostre recensioni né influenzano le nostre classifiche.
I guadagni dell'affiliato contribuiscono a coprire l'acquisizione dell'account, spese di prova, Manutenzione, e lo sviluppo del nostro sito web e dei sistemi interni.
Affidati a howtohosting.guide per approfondimenti affidabili e sincerità sull'hosting.