Nesta página: [ocultar]
One stray character in wp-config.php, um ponto e vírgula ausente ou uma citação excluída, e todo o seu site WordPress se transforma em uma tela branca. Esse mesmo arquivo também é onde você corrige páginas de administração lentas, bloquear o editor de código do painel, 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.
Resposta rápida: 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.

Última revisão: Junho 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 ou 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, preenche os detalhes do seu banco de dados, e salva o resultado como o arquivo real. Se você alguma vez ver wp-config-sample.php sentado em sua raiz, esse é o modelo, não a configuração ao vivo. Editar não faz nada.
Aqui está a parte que as pessoas sentem falta: mesmo no WordPress 7.0, este arquivo funciona exatamente como funcionava há uma década. As constantes mudam e novas são adicionadas, mas o mecanismo é a mesma configuração simples do PHP. É por isso que um tutorial desatualizado ainda pode quebrar um site moderno. Muitos hospedagem gerenciada de WordPress plataformas agora bloqueiam, ocultar, ou gerar parcialmente este arquivo automaticamente, então verifique as regras do seu host antes de editar.
How to Edit wp-config.php Safely
Faça backup do arquivo primeiro. Sempre. Baixe uma cópia para o seu computador antes de alterar qualquer coisa, então uma edição ruim é uma restauração de 30 segundos em vez de um pânico noturno. Isso é ainda mais importante se você estiver no meio de uma migração de site, onde os detalhes do banco de dados já estão em fluxo.
Você tem quatro maneiras comuns de:
- Gerenciador de arquivos (cPanel/painel host): Encontre o arquivo, clique com o botão direito, escolha Editar. Mais fácil para iniciantes, nenhum software necessário.
- SFTP ou FTP: Conecte-se com um cliente como o FileZilla, baixe o arquivo, editar localmente, carregue-o de volta. Melhor quando você deseja uma cópia local de qualquer maneira.
- WP-CLI: Correr
wp config set WP_DEBUG true --rawda linha de comando. Rápido e à prova de erros de digitação depois de configurado. - SSH com nano ou vim: Edite direto no servidor. Para pessoas que moram no terminal.
Duas regras mantêm você longe de problemas. Use um editor de código ou editor de texto simples (Código VS, Bloco de anotações, nano), nunca um processador de texto. Word e Pages adicionam caracteres de formatação invisíveis que transformam PHP válido em lixo. E coloque novas linhas acima de o comentário que lê:
/* Isso é tudo, pare de editar! Feliz publicação. */
Qualquer coisa que você colar abaixo dessa linha pode ser ignorada ou, pior, quebrar o arquivo. PHP também é exigente. Cada define() precisa de suas cotações, sua vírgula, e um ponto e vírgula de fechamento. Perca um e você terá a tela branca da morte. Então edite, Salve , em seguida, recarregue seu site em uma nova guia antes de fechar o editor. Se carregar, você é bom.
wp-config.php Constants Cheat Sheet
Antes do mergulho profundo, aqui está o mapa rápido: as constantes que você realmente alcançará, com seus padrões onde existe. Cada um recebe uma explicação completa mais abaixo.
DB_NAME,DB_USER,DB_PASSWORD,DB_HOST: a conexão do banco de dados (requeridos, sem padrões).$table_prefix: prefixo da tabela do banco de dados (padrãowp_).- Os oito
AUTH_KEYeAUTH_SALTlinhas: segurança de cookies de login (sem padrão, você os gera). WP_DEBUG,WP_DEBUG_LOG,WP_DEBUG_DISPLAY: registro de erros (tudo desativado por padrão).WP_MEMORY_LIMIT: memória PHP front-end (padrão 40M, 64M em vários sites).WP_POST_REVISIONS: histórico de edição armazenado (padrão ilimitado).AUTOSAVE_INTERVAL: editor autosave gap (padrão 60 segundos).EMPTY_TRASH_DAYS: retenção de lixo (padrão 30 dias).DISABLE_WP_CRON: desligue o agendador acionado pelo visitante (padrão: o agendador é executado).DISALLOW_FILE_EDIT: mate o editor de código do painel (padrão: edição permitida).FORCE_SSL_ADMIN: forçar HTTPS no login e administração (padrão desativado).FS_METHOD: como o WordPress grava arquivos (padrão: detectado automaticamente).WP_AUTO_UPDATE_CORE: política principal de atualização automática (padrãominor).WP_ENVIRONMENT_TYPE: rótulo do site, local / desenvolvimento / encenação / produção (padrãoproduction).WP_HOME,WP_SITEURL: endereço do site codificado (sem padrão, ler do banco de dados).
The Required Settings: Database Credentials
Quatro valores não são negociáveis. Sem eles o WordPress não consegue acessar seu banco de dados, e você verá o temido “Erro ao estabelecer uma conexão com o banco de dados” mensagem em vez de sua página inicial.
definir( 'DB_NAME', 'seu_nome_do_banco de dados' ); definir( 'DB_USER', 'seu_usuário_do_banco de dados' ); definir( 'DB_SENHA', 'sua_senha_forte' ); definir( 'DB_HOST', 'localhost' );
DB_HOST é localhost na maioria das hospedagens compartilhadas, mas muitos hosts usam um servidor de banco de dados dedicado com um endereço diferente ou uma porta fora do padrão (escrito como hostname:3307). Quando uma conexão falha e seu nome de usuário e senha estão corretos, o valor do host é o culpado usual. Verifique a documentação do seu host para a string exata.
Mais duas linhas de banco de dados completam. DB_CHARSET está definido para utf8mb4 nas instalações atuais, o conjunto de caracteres que suporta emoji e toda a gama de idiomas mundiais. DB_COLLATE permanece vazio em quase todos os casos, que permite ao MySQL escolher as regras de classificação corretas automaticamente.
Depois, há o prefixo da tabela, que não é uma constante, mas uma variável:
$prefixo_tabela = 'wp_';
O padrão é wp_. Alguns guias de segurança dizem para você mudar para algo aleatório para evitar ataques automatizados de injeção de SQL. Honestamente, a proteção é fraca contra qualquer invasor que já esteja em seu banco de dados, e alterá-lo em um site ativo significa renomear tabelas e atualizar dois valores serializados manualmente. Defina um prefixo personalizado no momento da instalação, se desejar. Não se preocupe em reescrevê-lo em um site em execução apenas para fins de segurança.
Security Keys and Salts
Abaixo do bloco do banco de dados há uma parede de longas strings aleatórias: oito deles, quatro “chaves” e quatro “sais.”
definir( 'AUTH_KEY', 'string-aleatória-longa-aqui' ); definir( 'SECURE_AUTH_KEY', 'string-aleatória-longa-aqui' ); definir( 'LOGGED_IN_KEY', 'string-aleatória-longa-aqui' ); definir( 'NONCE_KEY', 'string-aleatória-longa-aqui' ); definir( 'AUTH_SALT', 'string-aleatória-longa-aqui' ); definir( 'SECURE_AUTH_SALT', 'string-aleatória-longa-aqui' ); definir( 'LOGGED_IN_SALT', 'string-aleatória-longa-aqui' ); definir( 'NONCE_SALT', 'string-aleatória-longa-aqui' );
Eles embaralham os cookies de login e tokens de sessão que o WordPress armazena em seu navegador. Com forte, valores únicos, um biscoito roubado é muito mais difícil de falsificar. Você nunca digita essas chaves e nunca precisa se lembrar delas. Eles só precisam ser longos, aleatória, e diferente em cada site.
WordPress executa um gerador gratuito exatamente para isso. Visita https://api.wordpress.org/secret-key/1.1/salt/ no seu navegador e ele retorna oito novas linhas. Copie-os diretamente sobre o bloco antigo. Feito.
Aqui está o truque genuinamente útil: alterando esses valores desconecta todos os usuários instantaneamente, incluindo qualquer invasor em uma sessão sequestrada. Após uma suspeita de violação, a redefinição de senha por si só não expulsará um intruso cujo cookie ainda seja válido. Girar os sais irá. É o mais rápido “desconectar todos em todos os lugares” botão WordPress tem.
Debug Mode: Turning On the Error Log
Quando algo quebra e você não tem ideia do porquê, wp-config.php holds the flashlight. The main switch is WP_DEBUG, off by default:
definir( 'WP_DEBUG', verdade );
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:
definir( 'WP_DEBUG', verdade ); definir( 'WP_DEBUG_LOG', verdade ); definir( '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, consertá-lo, then switch all three back to false. Mais uma bandeira, 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? sim. Pass a full path instead of true, por exemplo 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.
definir( 'WP_MEMORY_LIMIT', '256M' ); definir( 'WP_MAX_MEMORY_LIMIT', '512M' ); definir( 'WP_POST_REVISIONS', 5 ); definir( 'AUTOSAVE_INTERVAL', 120 ); definir( 'EMPTY_TRASH_DAYS', 7 ); definir( 'DISABLE_WP_CRON', verdade );
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. Raising it to 256M is common. WP_MAX_MEMORY_LIMIT covers admin-only tasks like image processing and defaults to 256M. If you keep hitting memory errors no matter what you set here, your host is the ceiling, and that’s the moment to weigh moving from shared hosting to a VPS with real resources.
The content settings tame database bloat. WP_POST_REVISIONS defaults to true, meaning WordPress stores unlimited copies of every edit. On a busy blog that quietly triples your post table. Capping it at 5 keeps a useful undo history without the bloat. AUTOSAVE_INTERVAL defaults to 60 segundos; doubling it to 120 eases load on a slow server. E EMPTY_TRASH_DAYS defaults to 30, so trashed posts linger for a month unless you shorten it.
Want to kill revisions entirely on a site that never needs them? Definir define( 'WP_POST_REVISIONS', false );. Just remember you lose the rollback safety net when you do.
That last line in the block, DISABLE_WP_CRON, is the sleeper speed fix. By default WordPress runs its scheduled tasks (publishing posts, pruning trash, checking updates) on a pseudo-cron that fires whenever someone loads a page. On a busy site it fires far too often; on a quiet one, postagens agendadas podem ser publicadas com atraso porque nenhum visitante apareceu. Definir como verdadeiro interrompe isso, mas faça isso apenas se você adicionar um cron job de servidor real que atinja wp-cron.php em um cronograma fixo. Pule essa etapa e suas postagens programadas simplesmente pararão de ser enviadas. Uma bandeira relacionada: plug-ins de cache como WP Rocket ou W3 Total Cache set WP_CACHE para verdadeiro automaticamente, então você raramente adiciona manualmente.
Security Hardening Through wp-config.php
Algumas linhas curtas fecham algumas das portas de ataque mais comuns no WordPress. Comece com o editor de código do painel, que permite que qualquer pessoa com acesso de administrador reescreva seu tema e plugin PHP direto do navegador. Um login comprometido e um invasor possui seus arquivos. Desligue:
definir( 'DISALLOW_FILE_EDIT', verdade );
Quer ir mais longe em um site bloqueado? DISALLOW_FILE_MODS bloqueia todas as instalações de plugins e temas, atualizações, e exclusões do painel. It’s heavy-handed, so reserve it for sites where changes only ever happen through deployment, not the admin panel.
Próximo, force every login and admin page over HTTPS so passwords and cookies never travel in plain text:
definir( 'FORCE_SSL_ADMIN', verdade );
Two more moves happen outside the file’s contents. Primeiro, 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, so a server misconfiguration can’t ever serve it as plain text. Segundo, tighten file permissions. The usual 644 lets other users on a shared server read your file; set it to 600 ou 440 so only the owner can. You can also add an .htaccess rule that denies all web requests for the file. Prefer not to manage any of this yourself? Boa hospedagem gerenciada de WordPress handles file permissions, SSL, e proteção no nível do servidor para você.
Environment and Modern Constants
Versões mais recentes do WordPress adicionaram constantes que os tutoriais mais antigos ignoram, e vale a pena conhecê-los 2026.
WP_ENVIRONMENT_TYPE rotula que tipo de site é esse. Aceita quatro valores: local, development, staging, e production (o padrão). Os plug-ins leem-no para se comportarem de maneira diferente por ambiente. Um efeito colateral útil: quando você o configura development, WordPress ativa WP_DEBUG para você automaticamente.
definir( 'WP_ENVIRONMENT_TYPE', 'encenação' );
Adicionado no WordPress 6.3, WP_DEVELOPMENT_MODE é uma opção diferente para trabalhos de construção ativos. Leva core, plugin, theme, all, ou uma string vazia (o padrão). Os criadores de temas usam o theme valor então muda para theme.json aparece instantaneamente sem liberar cache. Deixe-o vazio em qualquer site ativo; desativa caches que você deseja executar em produção.
Duas constantes veteranas ainda conquistam seu lugar. WP_HOME e WP_SITEURL codifique o endereço do seu site. Setting them fixes redirect loops after a domain change and skips a database lookup on every page, a small speed win. They’re the first thing to set when a migration leaves your site pointing at the wrong URL:
definir( 'WP_HOME', 'https://example.com' ); definir( 'WP_SITEURL', 'https://example.com' );
One last note on updates: WP_AUTO_UPDATE_CORE defaults to 'minor', so your site auto-installs security and maintenance releases but waits for you on big version jumps. That default is sensible for most people. Set it to true for full auto-updates or false to handle everything yourself.
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 “pare de editar” linha. Restore your backup, or fix the exact line. É por isso que você copiou o arquivo primeiro.
“Erro ao estabelecer uma conexão com o banco de dados.” Um dos quatro valores do seu banco de dados está errado, ou o servidor de banco de dados está inativo. Verifique novamente DB_HOST primeiro (é o mais sorrateiro), em seguida, o nome de usuário e a senha em relação ao que seu host mostra em seu painel.
As edições não fazem nada. Você está editando wp-config-sample.php em vez do ao vivo wp-config.php, ou uma camada de cache está servindo uma página antiga. Confirme o nome do arquivo, então limpe seu cache.
As alterações desaparecem após uma atualização. Você adicionou linhas abaixo do comentário de interrupção da edição, e o WordPress os ignorou. Mova suas definições personalizadas acima dessa linha e elas ficarão.
WordPress pede credenciais de FTP. Isso acontece a cada atualização porque o servidor não pode gravar arquivos diretamente, então o WordPress volta a implorar por uma conexão. Adicionar define( 'FS_METHOD', 'direct' ); para deixá-lo gravar diretamente no disco. Se isso gerar erros de permissão, a verdadeira solução é corrigir a propriedade do arquivo no servidor, não esta linha.
perguntas frequentes
Where is the wp-config.php file located?
No diretório raiz do WordPress, a mesma pasta que contém o wp-admin, wp-inclui, e pastas wp-content. Na hospedagem compartilhada, essa pasta geralmente é chamada de public_html ou www. Em um VPS é comumente /var/www/html. Acesse-o por meio do gerenciador de arquivos do seu host ou de um cliente SFTP.
Is it safe to edit wp-config.php?
sim, contanto que você faça backup do arquivo primeiro e use um editor de texto simples ou código, não é um processador de texto. O risco não é o arquivo em si, é um erro de digitação no PHP, que produz uma tela branca. Salve sua edição, recarregue o site em uma nova guia para confirmar que funciona, e mantenha o backup até ter certeza.
What happens if I delete wp-config.php?
Seu site para de carregar e o WordPress redireciona para a tela de configuração, 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 “Erro ao estabelecer uma conexão com o banco de dados” 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, the database server itself may be down, which is a host issue.
How do I change the WordPress salts, and why would I?
Generate a fresh set at https://api.wordpress.org/secret-key/1.1/salt/ and paste them over the eight existing key and salt lines. The main reason to do it: changing them logs out every logged-in user instantly. Essa é a maneira mais rápida de expulsar um invasor de um site comprometido, mais rápido do que apenas redefinições de senha.
Does editing wp-config.php log users out?
Somente se você alterar as chaves de autenticação ou sais. Esses oito valores assinam os cookies de login, então substituí-los invalida todas as sessões ativas de uma só vez. Editando outras configurações, como limites de memória ou sinalizadores de depuração, deixa usuários logados sozinhos.
Should I move wp-config.php out of the root folder?
É uma camada extra razoável. WordPress verifica automaticamente um diretório acima da raiz, então mover o arquivo para lá o mantém totalmente fora do caminho público da web. Para a maioria dos sites, corrigir permissões de arquivo (600 ou 440) além de uma regra de negação .htaccess oferece quase a mesma proteção com menos barulho.
Can I turn my site into a multisite network from wp-config.php?
sim. Adicionando define( 'WP_ALLOW_MULTISITE', true ); desbloqueia uma tela de configuração de rede em Ferramentas no seu painel. Esse é apenas o primeiro passo: O WordPress então entrega a você um segundo bloco de constantes (gostar MULTISITE e SUBDOMAIN_INSTALL) colar, além de novas regras .htaccess. Faça backup primeiro, because converting to multisite is hard to cleanly undo.
O que fazer a seguir
Open your wp-config.php right now and do three quick checks. Confirm your salts aren’t still the install defaults. Adicionar DISALLOW_FILE_EDIT if it’s missing. And make sure the file permission is 600 ou 440, não 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? UMA hospedagem WordPress gratuita 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.
