<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Homehost</title>
	<atom:link href="https://www.homehost.com.br/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.homehost.com.br/blog/</link>
	<description>Hospedagem De Sites</description>
	<lastBuildDate>Tue, 21 Jul 2026 14:36:15 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
<site xmlns="com-wordpress:feed-additions:1">213695867</site>	<item>
		<title>cURL no PHP: como fazer requisições HTTP (GET, POST e mais)</title>
		<link>https://www.homehost.com.br/blog/tutoriais/php/curl-php/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Tue, 21 Jul 2026 14:28:33 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16943</guid>

					<description><![CDATA[<p>O cURL é a forma mais usada de fazer requisições HTTP em PHP — consumir uma API, enviar dados a outro servidor, baixar o conteúdo de uma URL. Diferente do file_get_contents(), ele funciona mesmo com o allow_url_fopen desligado e dá controle total sobre a requisição: método, cabeçalhos, autenticação, tempo limite. No PHP, o cURL é [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/" data-wpel-link="internal" target="_self">cURL no PHP: como fazer requisições HTTP (GET, POST e mais)</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>O cURL é a forma mais usada de fazer requisições HTTP em PHP — consumir uma API, enviar dados a outro servidor, baixar o conteúdo de uma URL. Diferente do <code>file_get_contents()</code>, ele funciona mesmo com o <code>allow_url_fopen</code> desligado e dá controle total sobre a requisição: método, cabeçalhos, autenticação, tempo limite.</strong> No PHP, o cURL é usado através de quatro funções principais: <code>curl_init()</code>, <code>curl_setopt()</code>, <code>curl_exec()</code> e <code>curl_close()</code>.</p>



<p class="wp-block-paragraph">Este guia mostra o essencial: como montar uma requisição GET e POST, enviar cabeçalhos e JSON, lidar com autenticação, tratar erros — e, no fim, como pegar um comando <code>curl</code> de terminal (aqueles que aparecem na documentação de APIs) e convertê-lo em código PHP.</p>



<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
  <div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
  <p style="color:#0b3d91; line-height:1.65; margin:0 0 12px;">Uma requisição GET básica com cURL no PHP tem quatro passos:</p>
  <div style="background:#0b3d91; border-radius:6px; padding:12px 14px; margin:0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
    <code style="color:#f1f5f9; font-size:13px; line-height:1.7; white-space:pre;">$ch = curl_init('https://api.exemplo.com/dados');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$resposta = curl_exec($ch);
curl_close($ch);</code>
  </div>
  <p style="color:#0b3d91; line-height:1.65; margin:12px 0 0;">O <code>CURLOPT_RETURNTRANSFER</code> faz o <code>curl_exec()</code> retornar a resposta como string, em vez de imprimi-la direto. É a opção que você quase sempre vai querer.</p>
</div>



<p class="wp-block-paragraph"><div id="ez-toc-container" class="ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit">Conteúdo</p>
<span class="ez-toc-title-toggle"></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#O_que_e_o_cURL_no_PHP" title="O que é o cURL no PHP" data-wpel-link="internal" target="_self">O que é o cURL no PHP</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Requisicao_GET" title="Requisição GET" data-wpel-link="internal" target="_self">Requisição GET</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Requisicao_POST" title="Requisição POST" data-wpel-link="internal" target="_self">Requisição POST</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Enviar_cabecalhos_headers" title="Enviar cabeçalhos (headers)" data-wpel-link="internal" target="_self">Enviar cabeçalhos (headers)</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Enviar_JSON" title="Enviar JSON" data-wpel-link="internal" target="_self">Enviar JSON</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Autenticacao_basica" title="Autenticação básica" data-wpel-link="internal" target="_self">Autenticação básica</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Tratar_erros_e_ver_o_codigo_de_resposta" title="Tratar erros e ver o código de resposta" data-wpel-link="internal" target="_self">Tratar erros e ver o código de resposta</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-8" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Como_converter_um_comando_curl_terminal_para_PHP" title="Como converter um comando curl (terminal) para PHP" data-wpel-link="internal" target="_self">Como converter um comando curl (terminal) para PHP</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Perguntas_frequentes" title="Perguntas frequentes" data-wpel-link="internal" target="_self">Perguntas frequentes</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/#Conclusao" title="Conclusão" data-wpel-link="internal" target="_self">Conclusão</a></li></ul></nav></div>
</p>



<h2 class="wp-block-heading">O que é o cURL no PHP</h2>



<p class="wp-block-paragraph">O <strong>cURL</strong> é uma biblioteca de transferência de dados que suporta <a href="https://www.homehost.com.br/blog/internet/o-que-e-http/" data-wpel-link="internal" target="_self">HTTP</a>, <a href="https://www.homehost.com.br/blog/ssl/https/" data-wpel-link="internal" target="_self">HTTPS</a>, <a href="https://www.homehost.com.br/blog/internet/o-que-e-ftp/" data-wpel-link="internal" target="_self">FTP</a> e vários outros protocolos. No <a href="https://www.homehost.com.br/blog/tutoriais/php/o-que-e-php/" data-wpel-link="internal" target="_self">PHP</a>, ela é exposta pela extensão <code>php-curl</code>, que na maioria das hospedagens já vem ativada. Com ela, o seu código pode agir como um cliente HTTP: fazer requisições a outros servidores e receber as respostas.</p>



<p class="wp-block-paragraph">É a ferramenta padrão para <strong>consumir APIs</strong>, integrar serviços externos (gateways de pagamento, envio de e-mail, redes sociais), baixar arquivos remotos e testar endpoints. Toda requisição cURL em PHP segue o mesmo esqueleto de quatro funções:</p>



<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:520px;">
  <thead>
    <tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
      <th style="padding:12px 14px; border:1px solid #1a73e8;">Função</th>
      <th style="padding:12px 14px; border:1px solid #1a73e8;">O que faz</th>
    </tr>
  </thead>
  <tbody>
    <tr style="background-color:#f5f7fa;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>curl_init()</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;">Inicia uma sessão cURL (opcionalmente já com a URL)</td>
    </tr>
    <tr style="background-color:#ffffff;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>curl_setopt()</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;">Define as opções da requisição (método, cabeçalhos, dados&#8230;)</td>
    </tr>
    <tr style="background-color:#f5f7fa;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>curl_exec()</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;">Executa a requisição e retorna a resposta</td>
    </tr>
    <tr style="background-color:#ffffff;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>curl_close()</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;">Encerra a sessão e libera os recursos</td>
    </tr>
  </tbody>
</table>
</div>



<h2 class="wp-block-heading">Requisição GET</h2>



<p class="wp-block-paragraph">O exemplo mais simples: buscar dados de uma URL. O ponto-chave é a opção <code><strong>CURLOPT_RETURNTRANSFER</strong></code>, que faz a resposta ser <strong>retornada</strong> como string (sem ela, o cURL imprime a resposta direto na saída):</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">&lt;?php
$ch = curl_init('https://api.exemplo.com/usuarios');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$resposta = curl_exec($ch);
curl_close($ch);

echo $resposta;
</code>
</div>



<h2 class="wp-block-heading">Requisição POST</h2>



<p class="wp-block-paragraph">Para enviar dados (criar um registro, submeter um formulário a uma API), você ativa o modo POST com <code><strong>CURLOPT_POST</strong></code> e passa os dados em <code><strong>CURLOPT_POSTFIELDS</strong></code>:</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">&lt;?php
$ch = curl_init('https://api.exemplo.com/usuarios');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'nome'  => 'Maria',
    'email' => 'maria@exemplo.com',
]);

$resposta = curl_exec($ch);
curl_close($ch);
</code>
</div>



<p class="wp-block-paragraph">Passar um array em <strong><code>CURLOPT_POSTFIELDS</code> </strong>envia os dados como formulário (<code>application/x-www-form-urlencoded</code> ou <code>multipart</code>). Para enviar JSON, veja mais abaixo.</p>



<h2 class="wp-block-heading">Enviar cabeçalhos (headers)</h2>



<p class="wp-block-paragraph">Muitas APIs exigem cabeçalhos — um token de autenticação, o tipo de conteúdo. Use <strong><code>CURLOPT_HTTPHEADER</code> </strong>com um array de strings:</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer SEU_TOKEN',
    'Content-Type: application/json',
]);
</code>
</div>



<h2 class="wp-block-heading">Enviar JSON</h2>



<p class="wp-block-paragraph">O caso mais comum ao consumir APIs modernas: enviar um corpo em JSON. Você codifica os dados com <code><strong>json_encode()</strong></code>, passa o resultado em <strong><code>CURLOPT_POSTFIELDS</code> </strong>e declara o <code>Content-Type</code>:</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">&lt;?php
$dados = ['nome' => 'Maria', 'plano' => 'pro'];

$ch = curl_init('https://api.exemplo.com/usuarios');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($dados));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
]);

$resposta = curl_exec($ch);
$dadosResposta = json_decode($resposta, true);
curl_close($ch);
</code>
</div>



<h2 class="wp-block-heading">Autenticação básica</h2>



<p class="wp-block-paragraph">Para APIs que usam autenticação HTTP básica (usuário e senha), use <code><strong>CURLOPT_USERPWD</strong></code>:</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">curl_setopt($ch, CURLOPT_USERPWD, 'usuario:senha');
</code>
</div>



<p class="wp-block-paragraph">Para autenticação por token (Bearer), use o cabeçalho <code>Authorization</code>, como mostrado na seção de headers.</p>



<h2 class="wp-block-heading">Tratar erros e ver o código de resposta</h2>



<p class="wp-block-paragraph">Uma requisição pode falhar (servidor fora do ar, timeout, SSL) ou retornar um status de erro (<a href="https://www.homehost.com.br/blog/internet/erro-404-not-found/" data-wpel-link="internal" target="_self">404</a>, <a href="https://www.homehost.com.br/blog/tutoriais/php/http-erro-500/" data-wpel-link="internal" target="_self">500</a>). Sempre verifique os dois:</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">$resposta = curl_exec($ch);

if ($resposta === false) {
    // Falha na conexão (timeout, DNS, SSL...)
    echo 'Erro cURL: ' . curl_error($ch);
} else {
    // Requisição completou; veja o status HTTP
    $codigo = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo "Status: $codigo";
}
curl_close($ch);
</code>
</div>



<p class="wp-block-paragraph">O <code>curl_error()</code> traz a mensagem de uma falha de conexão; o <code><strong>curl_getinfo()</strong></code> com <strong><code>CURLINFO_HTTP_CODE</code> </strong>traz o <a href="https://www.homehost.com.br/blog/internet/status-http-o-que-sao-codigos-de-resposta/" data-wpel-link="internal" target="_self">status HTTP</a> da resposta (200, 404, 500&#8230;). Uma requisição pode &#8220;ter sucesso&#8221; no cURL e ainda assim devolver um 404 — por isso os dois cheques.</p>



<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
  <div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nunca desative a verificação de SSL</div>
  <p style="color:#8a6d00; line-height:1.65; margin:0;">Ao topar com um erro de SSL, muitos tutoriais sugerem <code>CURLOPT_SSL_VERIFYPEER = false</code> como &#8220;solução&#8221;. Isso desliga a verificação do certificado e abre a porta para ataques de interceptação (man-in-the-middle). Não faça isso em produção. O certo é manter a verificação ligada e, se necessário, apontar um pacote de certificados válido (CA bundle) atualizado no servidor.</p>
</div>



<h2 class="wp-block-heading">Como converter um comando curl (terminal) para PHP</h2>



<p class="wp-block-paragraph">A documentação de muitas APIs mostra exemplos como um comando <code>curl</code> de terminal. Traduzir para PHP é direto quando você conhece o mapa. Veja este comando:</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">curl -X POST https://api.exemplo.com/pedidos \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"produto":"livro","qtd":2}'</code>
</div>



<p class="wp-block-paragraph">Cada parte do comando tem um equivalente em PHP:</p>



<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:520px;">
  <thead>
    <tr style="background-color:#0b3d91; color:#ffffff; text-align:left;">
      <th style="padding:12px 14px; border:1px solid #0b3d91;">No terminal</th>
      <th style="padding:12px 14px; border:1px solid #0b3d91;">No PHP</th>
    </tr>
  </thead>
  <tbody>
    <tr style="background-color:#f5f7fa;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>-X POST</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>CURLOPT_POST</code> ou <code>CURLOPT_CUSTOMREQUEST</code></td>
    </tr>
    <tr style="background-color:#ffffff;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>-H "..."</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>CURLOPT_HTTPHEADER</code> (array)</td>
    </tr>
    <tr style="background-color:#f5f7fa;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>-d '...'</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>CURLOPT_POSTFIELDS</code></td>
    </tr>
    <tr style="background-color:#ffffff;">
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>-u user:pass</code></td>
      <td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>CURLOPT_USERPWD</code></td>
    </tr>
  </tbody>
</table>
</div>



<p class="wp-block-paragraph">O comando acima, traduzido para PHP, fica assim:</p>



<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">&lt;?php
$ch = curl_init('https://api.exemplo.com/pedidos');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer TOKEN',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"produto":"livro","qtd":2}');

$resposta = curl_exec($ch);
curl_close($ch);
</code>
</div>



<p class="wp-block-paragraph">O padrão é sempre o mesmo: a URL vai no <code><strong>curl_init()</strong></code>, e cada flag do terminal (<strong><code>-X</code>, <code>-H</code>, <code>-d</code>, <code>-u</code></strong>) vira uma opção correspondente no <code><strong>curl_setopt()</strong></code>.</p>



<h2 class="wp-block-heading">Perguntas frequentes</h2>



<p class="wp-block-paragraph"><strong>O que é o cURL no PHP?</strong><br>É a forma de fazer requisições HTTP a partir do código PHP, usando a extensão php-curl. Com ele, o seu script atua como cliente HTTP: consome APIs, envia dados a outros servidores e baixa conteúdo remoto. As requisições seguem quatro funções — curl_init(), curl_setopt(), curl_exec() e curl_close().</p>



<p class="wp-block-paragraph"><strong>Como fazer uma requisição GET com cURL no PHP?</strong><br>Inicie a sessão com curl_init() passando a URL, defina curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) para receber a resposta como string, execute com curl_exec() e feche com curl_close(). O CURLOPT_RETURNTRANSFER é essencial: sem ele, a resposta é impressa direto na saída em vez de retornada.</p>



<p class="wp-block-paragraph"><strong>Como enviar dados por POST com cURL no PHP?</strong><br>Ative o POST com curl_setopt($ch, CURLOPT_POST, true) e passe os dados em CURLOPT_POSTFIELDS. Para dados de formulário, use um array. Para JSON, use json_encode() nos dados e adicione o cabeçalho Content-Type: application/json com CURLOPT_HTTPHEADER.</p>



<p class="wp-block-paragraph"><strong>Como ver o código de status HTTP da resposta?</strong><br>Use curl_getinfo($ch, CURLINFO_HTTP_CODE) depois do curl_exec(). Ele retorna o status HTTP (200, 404, 500&#8230;). Isso é importante porque uma requisição pode completar com sucesso no cURL e mesmo assim devolver um erro como 404 — o curl_exec() retornar false indica falha de conexão, não status de erro HTTP.</p>



<p class="wp-block-paragraph"><strong>Como converter um comando curl do terminal para PHP?</strong><br>Mapeie cada flag para uma opção do cURL: a URL vai no curl_init(); -X vira CURLOPT_POST ou CURLOPT_CUSTOMREQUEST; -H (cabeçalhos) vira CURLOPT_HTTPHEADER como array; -d (dados) vira CURLOPT_POSTFIELDS; e -u (autenticação) vira CURLOPT_USERPWD. O padrão de tradução é sempre o mesmo.</p>



<p class="wp-block-paragraph"><strong>cURL ou file_get_contents: qual usar?</strong><br>O cURL é mais completo e recomendado: funciona mesmo com o allow_url_fopen desligado e dá controle sobre método, cabeçalhos, autenticação e timeout. O file_get_contents() é mais simples para uma leitura rápida de URL, mas depende do allow_url_fopen ativo e oferece pouco controle. Para consumir APIs, prefira o cURL.</p>



<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é o cURL no PHP?","acceptedAnswer":{"@type":"Answer","text":"É a forma de fazer requisições HTTP a partir do código PHP, usando a extensão php-curl. Com ele, o seu script atua como cliente HTTP: consome APIs, envia dados a outros servidores e baixa conteúdo remoto. As requisições seguem quatro funções: curl_init(), curl_setopt(), curl_exec() e curl_close()."}},
    {"@type":"Question","name":"Como fazer uma requisição GET com cURL no PHP?","acceptedAnswer":{"@type":"Answer","text":"Inicie a sessão com curl_init() passando a URL, defina curl_setopt com CURLOPT_RETURNTRANSFER true para receber a resposta como string, execute com curl_exec() e feche com curl_close(). O CURLOPT_RETURNTRANSFER é essencial: sem ele, a resposta é impressa direto na saída em vez de retornada."}},
    {"@type":"Question","name":"Como enviar dados por POST com cURL no PHP?","acceptedAnswer":{"@type":"Answer","text":"Ative o POST com curl_setopt CURLOPT_POST true e passe os dados em CURLOPT_POSTFIELDS. Para dados de formulário, use um array. Para JSON, use json_encode() nos dados e adicione o cabeçalho Content-Type application/json com CURLOPT_HTTPHEADER."}},
    {"@type":"Question","name":"Como ver o código de status HTTP da resposta?","acceptedAnswer":{"@type":"Answer","text":"Use curl_getinfo com CURLINFO_HTTP_CODE depois do curl_exec(). Ele retorna o status HTTP (200, 404, 500...). Isso é importante porque uma requisição pode completar com sucesso no cURL e mesmo assim devolver um erro como 404. O curl_exec() retornar false indica falha de conexão, não status de erro HTTP."}},
    {"@type":"Question","name":"Como converter um comando curl do terminal para PHP?","acceptedAnswer":{"@type":"Answer","text":"Mapeie cada flag para uma opção do cURL: a URL vai no curl_init(); -X vira CURLOPT_POST ou CURLOPT_CUSTOMREQUEST; -H vira CURLOPT_HTTPHEADER como array; -d vira CURLOPT_POSTFIELDS; e -u vira CURLOPT_USERPWD. O padrão de tradução é sempre o mesmo."}},
    {"@type":"Question","name":"cURL ou file_get_contents: qual usar?","acceptedAnswer":{"@type":"Answer","text":"O cURL é mais completo e recomendado: funciona mesmo com o allow_url_fopen desligado e dá controle sobre método, cabeçalhos, autenticação e timeout. O file_get_contents() é mais simples para uma leitura rápida de URL, mas depende do allow_url_fopen ativo e oferece pouco controle. Para consumir APIs, prefira o cURL."}}
  ]
}
</script>



<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
  <div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
    <div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>
    </div>
    <div style="flex:1 1 320px; min-width:260px;">
      <div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">PHP pronto para integrar com qualquer API</div>
      <p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">A hospedagem da Homehost já vem com a extensão cURL ativada e PHP atualizado — é só subir seu código e começar a consumir APIs e integrar serviços, com suporte em português quando precisar.</p>
      <a href="https://www.homehost.com.br/hospedagem-de-sites/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener">
        Conhecer a hospedagem Homehost
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg>
      </a>
    </div>
  </div>
</div>



<h2 class="wp-block-heading">Conclusão</h2>



<p class="wp-block-paragraph">O cURL no PHP se resume a um padrão de quatro funções — <code>curl_init()</code>, <code>curl_setopt()</code>, <code>curl_exec()</code>, <code>curl_close()</code> — e a diferença entre uma requisição e outra está nas opções que você define pelo <code>curl_setopt()</code>: <code>CURLOPT_POST</code> para enviar dados, <code>CURLOPT_HTTPHEADER</code> para cabeçalhos, <code>CURLOPT_POSTFIELDS</code> para o corpo. Lembre sempre do <code>CURLOPT_RETURNTRANSFER</code> para receber a resposta como string, verifique tanto o <code>curl_error()</code> quanto o <a href="https://www.homehost.com.br/blog/internet/status-http-o-que-sao-codigos-de-resposta/" data-wpel-link="internal" target="_self">status HTTP</a>, e nunca desligue a verificação de SSL em produção. Com esse esqueleto, você consome praticamente qualquer API — e traduzir um comando <code>curl</code> de documentação para PHP vira questão de mapear cada flag para a sua opção.</p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/" data-wpel-link="internal" target="_self">cURL no PHP: como fazer requisições HTTP (GET, POST e mais)</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16943</post-id>	</item>
		<item>
		<title>allow_url_fopen: o que é, como ativar e os riscos</title>
		<link>https://www.homehost.com.br/blog/tutoriais/php/allow_url_fopen/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Tue, 21 Jul 2026 14:09:35 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16938</guid>

					<description><![CDATA[<p>O allow_url_fopen é a diretiva do PHP que decide se funções como file_get_contents() e fopen() podem abrir arquivos por uma URL remota — como se lê um arquivo local. Quando um script falha com a mensagem &#8220;http:// wrapper is disabled &#8230; by allow_url_fopen=0&#8221;, é porque essa permissão está desligada. Entender essa diretiva é entender uma [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/allow_url_fopen/" data-wpel-link="internal" target="_self">allow_url_fopen: o que é, como ativar e os riscos</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>O <code>allow_url_fopen</code> é a diretiva do PHP que decide se funções como <code>file_get_contents()</code> e <code>fopen()</code> podem abrir arquivos por uma URL remota — como se lê um arquivo local. Quando um script falha com a mensagem &#8220;http:// wrapper is disabled &#8230; by allow_url_fopen=0&#8221;, é porque essa permissão está desligada.</strong> Entender essa diretiva é entender uma escolha entre conveniência e segurança.</p>
</p>
<p class="wp-block-paragraph">Este guia explica o que o <code>allow_url_fopen</code> faz, como verificar e alterar o seu estado, por que ele costuma vir desativado por padrão e — o ponto mais importante — quando vale a pena usar o <a href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/" data-wpel-link="internal" target="_self">cURL</a> como alternativa mais segura para buscar conteúdo remoto.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>allow_url_fopen</strong> permite que o PHP abra arquivos por URL remota (com <code>file_get_contents()</code>, <code>fopen()</code> etc.). Para verificar se está ativo, use <code>ini_get('allow_url_fopen')</code>. Para ativar, coloque <code>allow_url_fopen = On</code> no <strong>php.ini</strong> ou <code>php_value allow_url_fopen 1</code> no <strong>.htaccess</strong>. Ele vem <strong>desligado por segurança</strong> em muitas hospedagens — se puder, prefira usar o <strong>cURL</strong> para buscar conteúdo remoto, que é mais seguro e não depende dessa diretiva.</p>
</div>
</p>
<h2 class="wp-block-heading">O que é o allow_url_fopen</h2>
</p>
<p class="wp-block-paragraph">O <strong><code>allow_url_fopen</code></strong> é uma diretiva do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> que controla se as funções de manipulação de arquivos do PHP podem acessar <strong>arquivos remotos por URL</strong>, e não apenas arquivos locais no servidor.</p>
</p>
<p class="wp-block-paragraph">Quando está <strong>ligado</strong> (On), você pode fazer algo assim:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">$conteudo = file_get_contents('https://exemplo.com/dados.xml');</code>
</div>
</p>
<p class="wp-block-paragraph">O PHP trata a URL remota como se fosse um arquivo local, baixando o conteúdo. Isso afeta principalmente as funções <code>file_get_contents()</code>, <code>fopen()</code> e afins. (Um detalhe: incluir código remoto com <code>include</code>/<code>require</code> depende de outra diretiva, o <code>allow_url_include</code>, que é ainda mais restrita — e deve ficar sempre desligada.)</p>
</p>
<p class="wp-block-paragraph">Quando está <strong>desligado</strong> (Off), qualquer tentativa de abrir uma URL remota com essas funções falha, tipicamente com o aviso: <code>file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0</code>.</p>
</p>
<h2 class="wp-block-heading">Como verificar se está ativo</h2>
</p>
<p class="wp-block-paragraph">Antes de mudar qualquer coisa, veja o estado atual. A forma mais direta, pelo código:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">&lt;?php<br />
if (ini_get('allow_url_fopen')) {<br />
    echo 'allow_url_fopen está ATIVO';<br />
} else {<br />
    echo 'allow_url_fopen está DESLIGADO';<br />
}<br />
</code>
</div>
</p>
<p class="wp-block-paragraph">Você também pode consultar o <code>phpinfo()</code> e procurar por <code>allow_url_fopen</code> — o guia do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> mostra como. Se o valor for <code>Off</code> e o seu script precisa ler URLs remotas, aí sim considere ativá-lo (ou, melhor ainda, usar <a href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/" data-wpel-link="internal" target="_self">cURL</a> — veja mais abaixo).</p>
</p>
<h2 class="wp-block-heading">Como ativar o allow_url_fopen</h2>
</p>
<p class="wp-block-paragraph">Se você tem certeza de que precisa (e entende os riscos), há os caminhos habituais.</p>
</p>
<h3 class="wp-block-heading">No php.ini</h3>
</p>
<p class="wp-block-paragraph">No <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a>:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">allow_url_fopen = On</code>
</div>
</p>
<p class="wp-block-paragraph">Em hospedagem compartilhada, pelo painel — no cPanel, em <em>Select PHP Version → Options</em>, marcando <code>allow_url_fopen</code>.</p>
</p>
<h3 class="wp-block-heading">No .htaccess</h3>
</p>
<p class="wp-block-paragraph">Em servidor Apache, pelo <a href="https://www.homehost.com.br/blog/internet/htaccess-aprenda-tudo-sobre-esse-arquivo/" data-wpel-link="internal" target="_self">.htaccess</a>:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">php_value allow_url_fopen 1</code>
</div>
</p>
<p class="wp-block-paragraph">Um ponto importante: o <code>allow_url_fopen</code> <strong>não pode</strong> ser alterado por <code>ini_set()</code> no código. Ele é lido na inicialização do PHP e faz parte da categoria de diretivas que só valem se definidas na configuração (php.ini, .htaccess ou painel) — nunca em tempo de execução. Se você viu por aí um <code>ini_set('allow_url_fopen', 1)</code>, saiba que ele não tem efeito.</p>
</p>
<h2 class="wp-block-heading">Por que ele vem desligado: a questão de segurança</h2>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Por que muitas hospedagens desligam por padrão</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">Um script que abre URLs remotas é uma porta de entrada para ataques. Se um invasor conseguir controlar a URL que o seu código abre, ele pode forçar o servidor a acessar endereços internos da rede (ataque conhecido como <strong>SSRF</strong>) ou, em cenários piores, injetar código remoto. Por isso, muitas hospedagens deixam o <code>allow_url_fopen</code> desligado por padrão — é uma camada de proteção, não um capricho.</p>
</div>
</p>
<p class="wp-block-paragraph">O risco não é teórico. Quando um script usa uma URL vinda de fora (de um formulário, de um parâmetro) sem validação, e o <code>allow_url_fopen</code> está ligado, um atacante pode manipular essa URL para fazer o servidor buscar recursos que não deveria — de páginas internas da rede a metadados de infraestrutura. É o tipo de brecha que costuma passar despercebido até ser explorado.</p>
</p>
<p class="wp-block-paragraph">Por isso, a recomendação geral é: <strong>mantenha desligado, a menos que você precise mesmo</strong> — e, se precisar, valide rigorosamente qualquer URL antes de abri-la, e nunca use uma URL que venha diretamente da entrada do usuário.</p>
</p>
<h2 class="wp-block-heading">A alternativa recomendada: cURL</h2>
</p>
<p class="wp-block-paragraph">Na maioria dos casos em que se quer buscar conteúdo remoto, há uma opção melhor que ligar o <code>allow_url_fopen</code>: usar o <strong>cURL</strong>, a biblioteca do PHP feita exatamente para requisições HTTP. O cURL funciona mesmo com o <code>allow_url_fopen</code> desligado, dá muito mais controle (cabeçalhos, timeout, métodos, autenticação) e é a forma consagrada de fazer requisições em PHP.</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">$ch = curl_init('https://exemplo.com/dados.xml');<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br />
$conteudo = curl_exec($ch);<br />
curl_close($ch);</code>
</div>
</p>
<p class="wp-block-paragraph">Esse trecho faz o mesmo que o <code>file_get_contents()</code> de uma URL, mas sem depender do <code>allow_url_fopen</code>. Uma abordagem robusta é o script tentar o <code>file_get_contents()</code> se a diretiva estiver ligada e cair para o cURL caso contrário — assim o código funciona em qualquer servidor, com ou sem a diretiva. Para a maioria dos projetos, adotar o cURL de saída é a escolha mais segura e portável.</p>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é o allow_url_fopen no PHP?</strong><br />É a diretiva que controla se o PHP pode abrir arquivos remotos por URL usando funções como file_get_contents() e fopen(), tratando o endereço remoto como se fosse um arquivo local. Quando está desligada, essas funções não conseguem acessar URLs externas e retornam um aviso indicando que o wrapper http:// está desabilitado.</p>
</p>
<p class="wp-block-paragraph"><strong>Como ativar o allow_url_fopen?</strong><br />Defina allow_url_fopen = On no php.ini, ou php_value allow_url_fopen 1 no .htaccess em servidores Apache. Em hospedagem compartilhada, ative pelo painel (no cPanel, em Select PHP Version → Options). Não é possível ativá-lo por ini_set() no código, porque a diretiva é lida na inicialização do PHP.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que o allow_url_fopen vem desligado?</strong><br />Por segurança. Scripts que abrem URLs remotas podem ser explorados: se um atacante controla a URL, ele pode forçar o servidor a acessar endereços internos (ataque SSRF) ou injetar código. Muitas hospedagens desligam a diretiva por padrão como proteção. Só ative se realmente precisar, validando qualquer URL antes de usá-la.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual a mensagem de erro quando o allow_url_fopen está desligado?</strong><br />Ao tentar abrir uma URL remota com a diretiva desligada, o PHP retorna algo como: file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0. É o sinal claro de que a função tentou acessar um recurso remoto e foi bloqueada pela configuração.</p>
</p>
<p class="wp-block-paragraph"><strong>Como buscar conteúdo remoto sem o allow_url_fopen?</strong><br />Use o cURL, a biblioteca de requisições HTTP do PHP. Ela funciona mesmo com o allow_url_fopen desligado e dá mais controle sobre a requisição. Uma prática comum é usar file_get_contents() quando a diretiva está ativa e cair para o cURL quando não está, deixando o código portável entre servidores.</p>
</p>
<p class="wp-block-paragraph"><strong>allow_url_fopen e allow_url_include são a mesma coisa?</strong><br />Não. O allow_url_fopen permite ler arquivos remotos com funções como file_get_contents(). O allow_url_include, mais perigoso, permitiria incluir e executar código remoto com include/require. O allow_url_include deve ficar sempre desligado, pois executar código externo é uma falha de segurança grave.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é o allow_url_fopen no PHP?","acceptedAnswer":{"@type":"Answer","text":"É a diretiva que controla se o PHP pode abrir arquivos remotos por URL usando funções como file_get_contents() e fopen(), tratando o endereço remoto como se fosse um arquivo local. Quando está desligada, essas funções não conseguem acessar URLs externas e retornam um aviso indicando que o wrapper http:// está desabilitado."}},
    {"@type":"Question","name":"Como ativar o allow_url_fopen?","acceptedAnswer":{"@type":"Answer","text":"Defina allow_url_fopen = On no php.ini, ou php_value allow_url_fopen 1 no .htaccess em servidores Apache. Em hospedagem compartilhada, ative pelo painel (no cPanel, em Select PHP Version, Options). Não é possível ativá-lo por ini_set() no código, porque a diretiva é lida na inicialização do PHP."}},
    {"@type":"Question","name":"Por que o allow_url_fopen vem desligado?","acceptedAnswer":{"@type":"Answer","text":"Por segurança. Scripts que abrem URLs remotas podem ser explorados: se um atacante controla a URL, ele pode forçar o servidor a acessar endereços internos (ataque SSRF) ou injetar código. Muitas hospedagens desligam a diretiva por padrão como proteção. Só ative se realmente precisar, validando qualquer URL antes de usá-la."}},
    {"@type":"Question","name":"Qual a mensagem de erro quando o allow_url_fopen está desligado?","acceptedAnswer":{"@type":"Answer","text":"Ao tentar abrir uma URL remota com a diretiva desligada, o PHP retorna algo como: file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0. É o sinal claro de que a função tentou acessar um recurso remoto e foi bloqueada pela configuração."}},
    {"@type":"Question","name":"Como buscar conteúdo remoto sem o allow_url_fopen?","acceptedAnswer":{"@type":"Answer","text":"Use o cURL, a biblioteca de requisições HTTP do PHP. Ela funciona mesmo com o allow_url_fopen desligado e dá mais controle sobre a requisição. Uma prática comum é usar file_get_contents() quando a diretiva está ativa e cair para o cURL quando não está, deixando o código portável entre servidores."}},
    {"@type":"Question","name":"allow_url_fopen e allow_url_include são a mesma coisa?","acceptedAnswer":{"@type":"Answer","text":"Não. O allow_url_fopen permite ler arquivos remotos com funções como file_get_contents(). O allow_url_include, mais perigoso, permitiria incluir e executar código remoto com include/require. O allow_url_include deve ficar sempre desligado, pois executar código externo é uma falha de segurança grave."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">Um ambiente PHP seguro e sob controle</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">A hospedagem da Homehost vem com PHP configurado de forma segura por padrão e permite ajustar diretivas como allow_url_fopen pelo cPanel quando o seu projeto precisa — com suporte em português para orientar a escolha certa.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-sites/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer a hospedagem Homehost<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">O <code>allow_url_fopen</code> é uma daquelas diretivas em que a resposta certa quase nunca é &#8220;simplesmente ligue&#8221;. Ela permite que o PHP abra URLs remotas com <code>file_get_contents()</code> e <code>fopen()</code>, mas vem desligada por padrão em muitas hospedagens justamente porque essa conveniência abre espaço para ataques como o SSRF. Antes de ativá-la, verifique com <code>ini_get('allow_url_fopen')</code> o estado atual, e considere se o cURL não resolve melhor — na maioria dos casos, resolve, com mais segurança e sem depender da diretiva. Se ainda assim precisar ligá-la, faça-o no <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> ou no .htaccess (nunca por <code>ini_set</code>), e valide toda URL antes de abri-la. Segurança e funcionalidade, aqui, andam em lados opostos da mesma chave — e vale saber qual você está girando.</p>
</p>
<p class="wp-block-paragraph">
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/allow_url_fopen/" data-wpel-link="internal" target="_self">allow_url_fopen: o que é, como ativar e os riscos</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16938</post-id>	</item>
		<item>
		<title>max_input_vars e max_input_time: resolvendo formulários que não salvam</title>
		<link>https://www.homehost.com.br/blog/tutoriais/php/max_input_vars/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Tue, 21 Jul 2026 12:47:21 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16932</guid>

					<description><![CDATA[<p>Se um menu do WordPress some ao salvar, as opções de um tema não gravam, ou um formulário grande envia os dados pela metade — sem nenhuma mensagem de erro —, a causa provável é o max_input_vars: o PHP está descartando silenciosamente as variáveis que passam de um certo limite. É um dos problemas mais [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/max_input_vars/" data-wpel-link="internal" target="_self">max_input_vars e max_input_time: resolvendo formulários que não salvam</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>Se um menu do WordPress some ao salvar, as opções de um tema não gravam, ou um formulário grande envia os dados pela metade — sem nenhuma mensagem de erro —, a causa provável é o <code>max_input_vars</code>: o PHP está descartando silenciosamente as variáveis que passam de um certo limite.</strong> É um dos problemas mais confusos justamente por não dar erro nenhum.</p>
</p>
<p class="wp-block-paragraph">O <code>max_input_vars</code> controla <strong>quantas</strong> variáveis o PHP aceita em uma única requisição; o <code>max_input_time</code>, seu parente próximo, controla <strong>quanto tempo</strong> o PHP gasta processando esses dados. As duas diretivas do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> atuam sobre o mesmo ponto — o envio de formulários grandes — e este guia explica o que cada uma faz, por que causam esses sintomas e como ajustá-las.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>max_input_vars</strong> define o número máximo de variáveis que o PHP aceita numa requisição (padrão: <strong>1000</strong>). Se um formulário ou menu envia mais que isso, o PHP <strong>descarta o excedente sem avisar</strong> — por isso menus e opções do WordPress &#8220;somem&#8221; ao salvar. A solução é aumentar o valor (para 3000 ou 5000) no <strong>php.ini</strong>, no <strong>.htaccess</strong> ou pelo painel. O <strong>max_input_time</strong> controla o tempo de processamento desses dados; se formulários grandes falham por demora, aumente-o também.</p>
</div>
</p>
<h2 class="wp-block-heading">O que é o max_input_vars</h2>
</p>
<p class="wp-block-paragraph">O <strong><code>max_input_vars</code></strong> é a diretiva do PHP que limita o <strong>número de variáveis de entrada</strong> que o servidor aceita em uma única requisição. Isso vale para os dados enviados por <code>POST</code>, <code>GET</code> e cookies somados.</p>
</p>
<p class="wp-block-paragraph">O valor padrão é <strong>1000</strong>. Na maioria dos sites, isso é mais que suficiente. Mas há um comportamento que torna essa diretiva traiçoeira: <strong>quando o limite é ultrapassado, o PHP não gera erro — ele simplesmente descarta as variáveis além do limite.</strong> A requisição continua, aparentemente com sucesso, mas com parte dos dados faltando.</p>
</p>
<p class="wp-block-paragraph">É essa &#8220;falha silenciosa&#8221; que confunde. Você salva uma configuração, o site diz que salvou, mas metade dos dados não foi gravada — e não há mensagem nenhuma explicando o porquê.</p>
</p>
<h2 class="wp-block-heading">Os sintomas: quando suspeitar do max_input_vars</h2>
</p>
<p class="wp-block-paragraph">O <code>max_input_vars</code> é especialmente comum em sites <a href="https://www.homehost.com.br/blog/tutoriais/php/o-que-e-php/" data-wpel-link="internal" target="_self">WordPress</a>, porque page builders, temas complexos e plugins robustos geram muitos campos de uma vez. Os sintomas típicos:</p>
</p>
<ul class="wp-block-list">
<li><strong>Itens de menu somem</strong> depois de salvar um menu grande no WordPress.</li>
</p>
<li><strong>Opções de tema ou do customizer não gravam</strong> — você salva, mas voltam ao valor anterior.</li>
</p>
<li><strong>Formulários longos enviam dados incompletos</strong>, perdendo os campos finais.</li>
</p>
<li><strong>Configurações de plugins pesados</strong> (páginas com dezenas ou centenas de campos) não persistem.</li>
</ul>
</p>
<p class="wp-block-paragraph">O padrão comum a todos: <strong>os primeiros dados são salvos, os últimos não</strong> — porque o PHP processa até o limite e descarta o resto. Se você percebe que &#8220;só o final do formulário se perde&#8221;, o <code>max_input_vars</code> é o suspeito número um.</p>
</p>
<h2 class="wp-block-heading">Como verificar o valor atual</h2>
</p>
<p class="wp-block-paragraph">Antes de mudar, confirme o valor em vigor. Crie um arquivo com <code>phpinfo()</code> e procure por <code>max_input_vars</code>, ou consulte pelo painel. O guia do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> mostra como localizar e ler essas configurações. Se o valor estiver em 1000 (o padrão) e você tem um formulário grande falhando, é sinal de que precisa aumentá-lo.</p>
</p>
<h2 class="wp-block-heading">Como aumentar o max_input_vars</h2>
</p>
<p class="wp-block-paragraph">Assim como outras diretivas do PHP, há mais de um caminho, dependendo do seu acesso.</p>
</p>
<h3 class="wp-block-heading">No php.ini (ou pelo painel)</h3>
</p>
<p class="wp-block-paragraph">O caminho mais direto. No <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a>, ajuste:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">max_input_vars = 3000</code>
</div>
</p>
<p class="wp-block-paragraph">Em hospedagem compartilhada, faça isso pelo painel — no cPanel, em <em>Select PHP Version → Options</em>, localizando <code>max_input_vars</code>. Um valor de <strong>3000</strong> resolve a grande maioria dos casos; sites muito complexos podem precisar de 5000.</p>
</p>
<h3 class="wp-block-heading">No .htaccess</h3>
</p>
<p class="wp-block-paragraph">Em servidor Apache, pelo <a href="https://www.homehost.com.br/blog/internet/htaccess-aprenda-tudo-sobre-esse-arquivo/" data-wpel-link="internal" target="_self">.htaccess</a> na raiz do site:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">php_value max_input_vars 3000</code>
</div>
</p>
<p class="wp-block-paragraph">Se essa linha gerar um erro 500, o servidor não aceita <code>php_value</code> no .htaccess (comum em PHP-FPM) — use então o php.ini ou o painel.</p>
</p>
<h3 class="wp-block-heading">Criando um php.ini próprio</h3>
</p>
<p class="wp-block-paragraph">Se você não tem acesso ao php.ini global, pode criar um arquivo <code>php.ini</code> (ou <code>.user.ini</code>) na raiz do site com a linha <code>max_input_vars = 3000</code>. O guia do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> detalha esse método.</p>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Não exagere no valor</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">Aumente o <code>max_input_vars</code> para o que o seu site precisa (3000 ou 5000 costumam bastar), não para um número gigante. Um limite muito alto abre espaço para que uma requisição maliciosa envie um volume enorme de variáveis e consuma memória do servidor. O limite existe também como proteção — eleve-o com critério, na medida da sua necessidade.</p>
</div>
</p>
<h2 class="wp-block-heading">O max_input_time: o parente próximo</h2>
</p>
<p class="wp-block-paragraph">O <strong><code>max_input_time</code></strong> controla <strong>quanto tempo</strong> (em segundos) o PHP pode gastar analisando os dados de entrada de uma requisição — o <code>POST</code>, o <code>GET</code> e os uploads. É diferente do <a href="https://www.homehost.com.br/blog/tutoriais/php/max-execution-time/" data-wpel-link="internal" target="_self">max_execution_time</a>, que mede o tempo de execução do script; o <code>max_input_time</code> mede só a fase de <strong>leitura da entrada</strong>.</p>
</p>
<p class="wp-block-paragraph">Enquanto o <code>max_input_vars</code> limita a <em>quantidade</em> de variáveis, o <code>max_input_time</code> limita o <em>tempo</em> de processá-las. Os dois se relacionam porque um formulário muito grande pode esbarrar em ambos: ter variáveis demais (max_input_vars) e demorar demais para ser lido (max_input_time).</p>
</p>
<p class="wp-block-paragraph">O valor padrão costuma ser <strong>60</strong> segundos (ou -1, que faz o PHP usar o <code>max_execution_time</code>). Se você tem formulários enormes, uploads pesados combinados com muitos campos, ou um checkout complexo que falha por tempo, vale aumentá-lo:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">max_input_time = 120</code>
</div>
</p>
<p class="wp-block-paragraph">Ajusta-se pelos mesmos caminhos do <code>max_input_vars</code>: php.ini, .htaccess (<code>php_value max_input_time 120</code>) ou painel. Na prática, o <code>max_input_vars</code> é a causa da maioria dos problemas de &#8220;formulário não salva&#8221;; o <code>max_input_time</code> entra quando o volume de dados é grande o bastante para a <em>leitura</em> demorar.</p>
</p>
<h2 class="wp-block-heading">Ativei e ainda não funciona? Verifique</h2>
</p>
<p class="wp-block-paragraph">Se você aumentou o <code>max_input_vars</code> e o problema persiste:</p>
</p>
<ul class="wp-block-list">
<li><strong>Confirme que o novo valor está ativo:</strong> use o <code>phpinfo()</code> e procure <code>max_input_vars</code> — se ainda mostra 1000, a mudança não pegou (arquivo errado, ou faltou reiniciar num VPS).</li>
</p>
<li><strong>O gargalo pode ser outra diretiva:</strong> se o formulário também envia muitos dados em volume (não só em quantidade de campos), o <code>post_max_size</code> pode ser o limite real. Verifique-o também.</li>
</p>
<li><strong>Editou o php.ini certo?</strong> Em cPanel, o php.ini ativo costuma ficar na home do usuário, não na raiz do WordPress. O <code>phpinfo()</code> mostra qual arquivo está em uso.</li>
</p>
<li><strong><code>ini_set</code> não resolve este caso:</strong> o <code>max_input_vars</code> <strong>não pode</strong> ser alterado por <code>ini_set()</code> no código, porque o PHP já processou a entrada antes de o script rodar. Use php.ini, .htaccess ou painel — nunca o código.</li>
</ul>
</p>
<p class="wp-block-paragraph">Esse último ponto é importante e pouca gente sabe: diferente do <code>display_errors</code> ou do <code>memory_limit</code>, o <code>max_input_vars</code> <strong>não funciona via <code>ini_set()</code></strong>, porque quando o seu script começa a rodar, a entrada já foi lida (e truncada). Tem de ser definido antes, na configuração.</p>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é o max_input_vars no PHP?</strong><br />É a diretiva que define o número máximo de variáveis de entrada que o PHP aceita em uma única requisição, somando POST, GET e cookies. O valor padrão é 1000. Quando uma requisição ultrapassa esse limite, o PHP descarta as variáveis excedentes sem gerar erro, o que causa perda silenciosa de dados em formulários e menus grandes.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que meu menu ou formulário do WordPress não salva tudo?</strong><br />A causa mais comum é o max_input_vars. Menus grandes, page builders, temas complexos e plugins com muitos campos podem gerar mais de 1000 variáveis numa requisição. Ao ultrapassar o limite, o PHP descarta o excedente silenciosamente, então parte dos itens ou opções não é salva. Aumentar o max_input_vars para 3000 costuma resolver.</p>
</p>
<p class="wp-block-paragraph"><strong>Como aumentar o max_input_vars?</strong><br />Defina um valor maior no php.ini (<code>max_input_vars = 3000</code>), no .htaccess em Apache (<code>php_value max_input_vars 3000</code>), ou pelo painel de hospedagem (no cPanel, em Select PHP Version → Options). Em hospedagem compartilhada, o painel é o caminho mais simples. Depois, confirme com phpinfo que o novo valor está ativo.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual a diferença entre max_input_vars e max_input_time?</strong><br />O max_input_vars limita a quantidade de variáveis de entrada numa requisição; o max_input_time limita o tempo (em segundos) que o PHP gasta lendo esses dados. Um trata do &#8220;quantos campos&#8221;, o outro do &#8220;quanto tempo para processá-los&#8221;. Formulários muito grandes podem esbarrar nos dois.</p>
</p>
<p class="wp-block-paragraph"><strong>Posso alterar o max_input_vars pelo ini_set no código?</strong><br />Não. Diferente de outras diretivas, o max_input_vars não pode ser alterado por ini_set(), porque o PHP processa os dados de entrada antes de o seu script começar a rodar. Quando o código executa, a entrada já foi lida e truncada. Por isso, é preciso definir o valor no php.ini, no .htaccess ou no painel.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual valor devo usar para o max_input_vars?</strong><br />Depende do tamanho dos seus formulários, mas 3000 resolve a grande maioria dos casos, e 5000 atende sites bem complexos. Evite valores exagerados: um limite muito alto pode permitir que requisições maliciosas consumam memória do servidor. Aumente na medida da necessidade real do seu site.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é o max_input_vars no PHP?","acceptedAnswer":{"@type":"Answer","text":"É a diretiva que define o número máximo de variáveis de entrada que o PHP aceita em uma única requisição, somando POST, GET e cookies. O valor padrão é 1000. Quando uma requisição ultrapassa esse limite, o PHP descarta as variáveis excedentes sem gerar erro, o que causa perda silenciosa de dados em formulários e menus grandes."}},
    {"@type":"Question","name":"Por que meu menu ou formulário do WordPress não salva tudo?","acceptedAnswer":{"@type":"Answer","text":"A causa mais comum é o max_input_vars. Menus grandes, page builders, temas complexos e plugins com muitos campos podem gerar mais de 1000 variáveis numa requisição. Ao ultrapassar o limite, o PHP descarta o excedente silenciosamente, então parte dos itens ou opções não é salva. Aumentar o max_input_vars para 3000 costuma resolver."}},
    {"@type":"Question","name":"Como aumentar o max_input_vars?","acceptedAnswer":{"@type":"Answer","text":"Defina um valor maior no php.ini (max_input_vars = 3000), no .htaccess em Apache (php_value max_input_vars 3000), ou pelo painel de hospedagem (no cPanel, em Select PHP Version, Options). Em hospedagem compartilhada, o painel é o caminho mais simples. Depois, confirme com phpinfo que o novo valor está ativo."}},
    {"@type":"Question","name":"Qual a diferença entre max_input_vars e max_input_time?","acceptedAnswer":{"@type":"Answer","text":"O max_input_vars limita a quantidade de variáveis de entrada numa requisição; o max_input_time limita o tempo em segundos que o PHP gasta lendo esses dados. Um trata do quantos campos, o outro do quanto tempo para processá-los. Formulários muito grandes podem esbarrar nos dois."}},
    {"@type":"Question","name":"Posso alterar o max_input_vars pelo ini_set no código?","acceptedAnswer":{"@type":"Answer","text":"Não. Diferente de outras diretivas, o max_input_vars não pode ser alterado por ini_set(), porque o PHP processa os dados de entrada antes de o seu script começar a rodar. Quando o código executa, a entrada já foi lida e truncada. Por isso, é preciso definir o valor no php.ini, no .htaccess ou no painel."}},
    {"@type":"Question","name":"Qual valor devo usar para o max_input_vars?","acceptedAnswer":{"@type":"Answer","text":"Depende do tamanho dos seus formulários, mas 3000 resolve a grande maioria dos casos, e 5000 atende sites bem complexos. Evite valores exagerados: um limite muito alto pode permitir que requisições maliciosas consumam memória do servidor. Aumente na medida da necessidade real do seu site."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">WordPress que salva tudo, sem dor de cabeça</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">A hospedagem WordPress da Homehost já vem com limites de PHP ajustados para temas e page builders modernos — e você altera o max_input_vars e outras diretivas pelo cPanel em segundos, com suporte em português.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-wordpress/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer a hospedagem WordPress<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">Quando dados somem de um formulário ou menu sem nenhum erro, o <code>max_input_vars</code> é quase sempre o culpado: o PHP está descartando em silêncio tudo que passa do limite de 1000 variáveis. A solução é direta — aumentar o valor para 3000 (ou 5000 em sites complexos) no <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a>, no .htaccess ou pelo painel, lembrando que essa diretiva <strong>não</strong> funciona via <code>ini_set()</code> no código. O <code>max_input_time</code>, seu parente, entra quando o problema é o <em>tempo</em> de leitura de dados grandes. Com os dois ajustados na medida certa, os formulários voltam a salvar tudo — e você para de perder configurações sem entender por quê.</p></p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/max_input_vars/" data-wpel-link="internal" target="_self">max_input_vars e max_input_time: resolvendo formulários que não salvam</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16932</post-id>	</item>
		<item>
		<title>Display errors PHP: como exibir todos os erros do PHP</title>
		<link>https://www.homehost.com.br/blog/tutoriais/php/display-errors-php/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Tue, 21 Jul 2026 12:13:10 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16924</guid>

					<description><![CDATA[<p>Quando um script PHP falha e a página aparece totalmente em branco, quase sempre o motivo é que a exibição de erros está desligada — o PHP encontrou o erro, mas foi configurado para não mostrá-lo. Para revelar a mensagem, é preciso ativar o display_errors. É a primeira coisa a fazer para depurar qualquer problema [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/display-errors-php/" data-wpel-link="internal" target="_self">Display errors PHP: como exibir todos os erros do PHP</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>Quando um script PHP falha e a página aparece totalmente em branco, quase sempre o motivo é que a exibição de erros está desligada — o PHP encontrou o erro, mas foi configurado para não mostrá-lo. Para revelar a mensagem, é preciso ativar o <code>display_errors</code>.</strong> É a primeira coisa a fazer para depurar qualquer problema de PHP.</p>
</p>
<p class="wp-block-paragraph">Por padrão, muitos servidores vêm com a exibição de erros desativada (o que é correto para um site no ar). Mas, ao desenvolver ou diagnosticar um problema, você precisa ver as mensagens. Este guia mostra como ativar a exibição de todos os erros do PHP pelos três caminhos possíveis — direto no código, no php.ini e no .htaccess —, como usar o <code>error_reporting</code> para escolher o que aparece, e por que é essencial desligar tudo isso quando o site voltar ao ar.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">Para exibir todos os erros do PHP, adicione ao início do seu script:</p>
<div style="background:#0b3d91; border-radius:6px; padding:12px 14px; margin:12px 0 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
    <code style="color:#f1f5f9; font-size:13px; line-height:1.7; white-space:pre;">ini_set('display_errors', 1);<br />
ini_set('display_startup_errors', 1);<br />
error_reporting(E_ALL);</code>
  </div>
<p style="color:#0b3d91; line-height:1.65; margin:12px 0 0;">O <code>display_errors</code> liga a exibição na tela; o <code>error_reporting(E_ALL)</code> define que <strong>todos</strong> os tipos de erro apareçam. Isso vale para uma tela em branco causada por erro de PHP. <strong>Importante:</strong> desligue a exibição quando o site estiver em produção.</p>
</div>
</p>
<h2 class="wp-block-heading">Por que o PHP não mostra os erros</h2>
</p>
<p class="wp-block-paragraph">Quando uma página PHP dá erro e aparece <strong>totalmente em branco</strong> (a famosa &#8220;tela branca da morte&#8221;), o que aconteceu foi o seguinte: o PHP executou o script, encontrou um erro fatal, interrompeu tudo — e, como estava configurado para <strong>não exibir erros</strong>, não mostrou nenhuma mensagem. O resultado é uma página vazia, sem pista nenhuma.</p>
</p>
<p class="wp-block-paragraph">Isso é controlado por duas diretivas do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> que trabalham juntas:</p>
</p>
<ul class="wp-block-list">
<li><strong><code>display_errors</code></strong> — decide <strong>se</strong> os erros aparecem na tela (On) ou não (Off).</li>
</p>
<li><strong><code>error_reporting</code></strong> — decide <strong>quais</strong> tipos de erro são considerados (erros fatais, avisos, notices, etc.).</li>
</ul>
</p>
<p class="wp-block-paragraph">Em um servidor de produção, o <code>display_errors</code> normalmente vem <strong>desligado</strong> de propósito, por segurança. Para desenvolver ou diagnosticar, você precisa ligá-lo temporariamente. Há três formas de fazer isso.</p>
</p>
<h3 class="wp-block-heading">Caminho 1: direto no código PHP (ini_set)</h3>
</p>
<p class="wp-block-paragraph">A forma mais rápida e localizada, ideal para depurar um script específico, é adicionar estas linhas <strong>no início</strong> do arquivo PHP:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">&lt;?php<br />
ini_set('display_errors', 1);<br />
ini_set('display_startup_errors', 1);<br />
error_reporting(E_ALL);</p>
<p>// resto do seu código<br />
</code>
</div>
</p>
<p class="wp-block-paragraph">O que cada linha faz:</p>
</p>
<ul class="wp-block-list">
<li><strong><code>ini_set('display_errors', 1)</code></strong> — liga a exibição de erros na tela para este script.</li>
</p>
<li><strong><code>ini_set('display_startup_errors', 1)</code></strong> — mostra também os erros que ocorrem na inicialização do próprio PHP (que o <code>display_errors</code> sozinho não pega).</li>
</p>
<li><strong><code>error_reporting(E_ALL)</code></strong> — pede que <strong>todos</strong> os níveis de erro sejam reportados: fatais, avisos (warnings), notices e o resto.</li>
</ul>
</p>
<p class="wp-block-paragraph">Há uma limitação importante: se o erro for <strong>de sintaxe no próprio arquivo</strong> onde você colocou essas linhas, elas não chegam a rodar — o PHP falha antes de executá-las. Nesse caso, use um dos outros dois caminhos, ou coloque o código de teste num arquivo separado que inclua o problemático.</p>
</p>
<h3 class="wp-block-heading">Caminho 2: no php.ini</h3>
</p>
<p class="wp-block-paragraph">Para ligar a exibição de erros <strong>para todo o site</strong> (útil em um ambiente de desenvolvimento inteiro), ajuste as diretivas no <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a>:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">display_errors = On<br />
display_startup_errors = On<br />
error_reporting = E_ALL</code>
</div>
</p>
<p class="wp-block-paragraph">Lembre-se de que, ao editar o php.ini diretamente, a mudança <strong>só vale depois de reiniciar</strong> o servidor web (Apache) ou o PHP-FPM. Em hospedagem compartilhada, você faz esse ajuste pelo painel — no cPanel, em <em>Select PHP Version → Options</em>, localizando <code>display_errors</code> e <code>error_reporting</code>. O guia do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> detalha cada forma de editar.</p>
</p>
<h3 class="wp-block-heading">Caminho 3: no .htaccess</h3>
</p>
<p class="wp-block-paragraph">Se você usa servidor Apache e não tem acesso ao php.ini, pode ligar a exibição pelo <a href="https://www.homehost.com.br/blog/internet/htaccess-aprenda-tudo-sobre-esse-arquivo/" data-wpel-link="internal" target="_self">.htaccess</a>, na raiz do site:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">php_flag display_errors on<br />
php_flag display_startup_errors on<br />
php_value error_reporting E_ALL</code>
</div>
</p>
<p class="wp-block-paragraph">Esse caminho é prático porque vale para todo o site sem precisar reiniciar nada, mas depende de o servidor ser Apache e de permitir diretivas <code>php_value</code>/<code>php_flag</code> no .htaccess (o que não acontece em setups com PHP-FPM). Se as linhas gerarem um erro 500, é sinal de que o servidor não aceita esse método — use então o php.ini ou o painel.</p>
</p>
<h2 class="wp-block-heading">Entendendo o error_reporting</h2>
</p>
<p class="wp-block-paragraph">O <code>error_reporting</code> é o que define <strong>quais</strong> erros você quer ver. O valor mais usado para depurar é o <code>E_ALL</code>, que mostra tudo, mas há outros níveis úteis:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:520px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Valor</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que mostra</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>E_ALL</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Todos os erros, avisos e notices (o mais completo)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>E_ERROR</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Só os erros fatais, que interrompem a execução</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>E_ALL &amp; ~E_NOTICE</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Tudo, menos os notices (avisos menores)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>E_ALL &amp; ~E_DEPRECATED</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Tudo, menos avisos de recursos obsoletos</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Para depurar, <code>E_ALL</code> é o recomendado — você quer ver tudo, inclusive os notices, que muitas vezes apontam a origem de um bug (como uma variável não definida). O <code>display_errors</code> liga a exibição; o <code>error_reporting</code> filtra o que é exibido. Os dois precisam estar configurados para você ver o erro.</p>
</p>
<h2 class="wp-block-heading">Ver erros sem exibi-los na tela: o log</h2>
</p>
<p class="wp-block-paragraph">Nem sempre você quer os erros aparecendo na tela — especialmente num site que tem visitantes. A alternativa é <strong>registrar os erros em um arquivo de log</strong>, em vez de exibi-los:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">display_errors = Off<br />
log_errors = On<br />
error_log = /caminho/para/error.log</code>
</div>
</p>
<p class="wp-block-paragraph">Assim, os erros não aparecem para os visitantes, mas ficam gravados num arquivo que só você acessa. É o método ideal para <strong>produção</strong>: você continua sabendo o que deu errado (consultando o log), sem expor nada ao público. Muitos painéis de hospedagem já mantêm um arquivo de log de erros do PHP que você pode consultar sem configurar nada.</p>
</p>
<h2 class="wp-block-heading">Por que desligar em produção</h2>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nunca deixe display_errors ligado num site no ar</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">As mensagens de erro do PHP expõem informações valiosas para um atacante: caminhos de arquivos no servidor, nomes de banco de dados, trechos de código, versões de software. Deixar o <code>display_errors</code> ligado em produção é entregar um mapa da sua infraestrutura a qualquer visitante. Em um site no ar, mantenha <code>display_errors = Off</code> e use o <strong>log de erros</strong> para acompanhar os problemas com segurança.</p>
</div>
</p>
<p class="wp-block-paragraph">A regra de ouro: <strong><code>display_errors</code> ligado no desenvolvimento, desligado na produção</strong>. Ao terminar de depurar um problema num site que está no ar, lembre-se de remover as linhas de <code>ini_set</code> que você adicionou, ou de desligar a diretiva no painel. Deixá-la ligada é um dos deslizes de segurança mais comuns em PHP.</p>
</p>
<h2 class="wp-block-heading">Erros ainda não aparecem? Verifique</h2>
</p>
<p class="wp-block-paragraph">Se você ativou tudo e a página continua em branco, alguns pontos a checar:</p>
</p>
<ul class="wp-block-list">
<li><strong>Erro de sintaxe no arquivo:</strong> se o próprio arquivo tem um erro de sintaxe, o <code>ini_set</code> dentro dele não roda. Ative pelo php.ini ou .htaccess, ou verifique o log de erros.</li>
</p>
<li><strong>A configuração não foi aplicada:</strong> se editou o php.ini, confirme que reiniciou o serviço e que editou o arquivo certo (veja como no guia do <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a>).</li>
</p>
<li><strong>O erro está sendo logado, não exibido:</strong> consulte o arquivo de log de erros do PHP (o painel da hospedagem costuma ter um &#8220;Error Log&#8221;).</li>
</p>
<li><strong>Cache de página:</strong> se o site usa cache, limpe-o para garantir que está vendo a execução real do PHP.</li>
</ul>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>Como exibir todos os erros no PHP?</strong><br />Adicione ao início do seu script as linhas <code>ini_set('display_errors', 1);</code>, <code>ini_set('display_startup_errors', 1);</code> e <code>error_reporting(E_ALL);</code>. A primeira liga a exibição na tela, a segunda inclui erros de inicialização e a terceira faz com que todos os tipos de erro sejam reportados. Para todo o site, ajuste as mesmas diretivas no php.ini ou no .htaccess.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que meu PHP não mostra erros e a tela fica em branco?</strong><br />Porque a diretiva display_errors está desligada. Quando o PHP encontra um erro fatal e a exibição está desativada, ele interrompe o script e devolve uma página vazia, sem mensagem. Ativando o display_errors e o error_reporting(E_ALL), a mensagem de erro passa a aparecer, revelando a causa do problema.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual a diferença entre display_errors e error_reporting?</strong><br />São complementares. O display_errors decide se os erros aparecem na tela ou não (On/Off). O error_reporting decide quais tipos de erro são considerados (fatais, avisos, notices). Para ver um erro, os dois precisam estar configurados: a exibição ligada e o nível incluindo aquele tipo de erro. O valor error_reporting(E_ALL) mostra todos.</p>
</p>
<p class="wp-block-paragraph"><strong>Como exibir erros do PHP sem acesso ao php.ini?</strong><br />Você tem dois caminhos. No próprio código, adicione <code>ini_set('display_errors', 1)</code> e <code>error_reporting(E_ALL)</code> no início do script. No Apache, pode usar o arquivo .htaccess com <code>php_flag display_errors on</code> e <code>php_value error_reporting E_ALL</code>. Em hospedagem compartilhada, também dá para ajustar pelo painel, no cPanel em Select PHP Version.</p>
</p>
<p class="wp-block-paragraph"><strong>É seguro deixar a exibição de erros ligada?</strong><br />Não em produção. As mensagens de erro expõem caminhos de arquivos, nomes de banco de dados e outros detalhes que ajudam um atacante. Em um site no ar, mantenha display_errors = Off e registre os erros num log (log_errors = On) para acompanhá-los com segurança. A exibição na tela deve ficar ligada apenas em ambiente de desenvolvimento.</p>
</p>
<p class="wp-block-paragraph"><strong>Onde ficam os logs de erro do PHP?</strong><br />O local é definido pela diretiva error_log no php.ini. Em muitas hospedagens, há um arquivo de log de erros acessível pelo painel de controle (procure por &#8220;Error Log&#8221; no cPanel). Se você define o error_log manualmente, aponte para um caminho onde o PHP tenha permissão de escrita, e consulte esse arquivo para ver os erros registrados.</p>
</p>
<p class="wp-block-paragraph"><strong>O que significa error_reporting(E_ALL)?</strong><br />É o comando que diz ao PHP para reportar todos os níveis de erro: erros fatais, avisos (warnings), notices, avisos de código obsoleto (deprecated) e o resto. É o valor recomendado durante o desenvolvimento, porque mostra o quadro completo — inclusive os notices, que costumam apontar a origem de bugs sutis, como o uso de uma variável não definida.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"Como exibir todos os erros no PHP?","acceptedAnswer":{"@type":"Answer","text":"Adicione ao início do seu script as linhas ini_set('display_errors', 1); ini_set('display_startup_errors', 1); e error_reporting(E_ALL);. A primeira liga a exibição na tela, a segunda inclui erros de inicialização e a terceira faz com que todos os tipos de erro sejam reportados. Para todo o site, ajuste as mesmas diretivas no php.ini ou no .htaccess."}},
    {"@type":"Question","name":"Por que meu PHP não mostra erros e a tela fica em branco?","acceptedAnswer":{"@type":"Answer","text":"Porque a diretiva display_errors está desligada. Quando o PHP encontra um erro fatal e a exibição está desativada, ele interrompe o script e devolve uma página vazia, sem mensagem. Ativando o display_errors e o error_reporting(E_ALL), a mensagem de erro passa a aparecer, revelando a causa do problema."}},
    {"@type":"Question","name":"Qual a diferença entre display_errors e error_reporting?","acceptedAnswer":{"@type":"Answer","text":"São complementares. O display_errors decide se os erros aparecem na tela ou não (On/Off). O error_reporting decide quais tipos de erro são considerados (fatais, avisos, notices). Para ver um erro, os dois precisam estar configurados: a exibição ligada e o nível incluindo aquele tipo de erro. O valor error_reporting(E_ALL) mostra todos."}},
    {"@type":"Question","name":"Como exibir erros do PHP sem acesso ao php.ini?","acceptedAnswer":{"@type":"Answer","text":"Você tem dois caminhos. No próprio código, adicione ini_set('display_errors', 1) e error_reporting(E_ALL) no início do script. No Apache, pode usar o arquivo .htaccess com php_flag display_errors on e php_value error_reporting E_ALL. Em hospedagem compartilhada, também dá para ajustar pelo painel, no cPanel em Select PHP Version."}},
    {"@type":"Question","name":"É seguro deixar a exibição de erros ligada?","acceptedAnswer":{"@type":"Answer","text":"Não em produção. As mensagens de erro expõem caminhos de arquivos, nomes de banco de dados e outros detalhes que ajudam um atacante. Em um site no ar, mantenha display_errors = Off e registre os erros num log (log_errors = On) para acompanhá-los com segurança. A exibição na tela deve ficar ligada apenas em ambiente de desenvolvimento."}},
    {"@type":"Question","name":"Onde ficam os logs de erro do PHP?","acceptedAnswer":{"@type":"Answer","text":"O local é definido pela diretiva error_log no php.ini. Em muitas hospedagens, há um arquivo de log de erros acessível pelo painel de controle (procure por Error Log no cPanel). Se você define o error_log manualmente, aponte para um caminho onde o PHP tenha permissão de escrita, e consulte esse arquivo para ver os erros registrados."}},
    {"@type":"Question","name":"O que significa error_reporting(E_ALL)?","acceptedAnswer":{"@type":"Answer","text":"É o comando que diz ao PHP para reportar todos os níveis de erro: erros fatais, avisos, notices, avisos de código obsoleto (deprecated) e o resto. É o valor recomendado durante o desenvolvimento, porque mostra o quadro completo, inclusive os notices, que costumam apontar a origem de bugs sutis, como o uso de uma variável não definida."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">Ambiente PHP pronto para desenvolver</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">Na hospedagem da Homehost você controla o PHP pelo cPanel — ativa a exibição de erros para depurar, consulta os logs e ajusta cada diretiva em poucos cliques, com suporte em português quando precisar.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-sites/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer a hospedagem Homehost<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">Uma tela em branco no PHP quase nunca é um mistério — é só o erro escondido. Para revelá-lo, o essencial é: no código, <code>ini_set('display_errors', 1)</code> mais <code>error_reporting(E_ALL)</code> no topo do script; ou, para o site todo, as mesmas diretivas no <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini</a> ou no .htaccess. Lembre da divisão de papéis — o <code>display_errors</code> liga a exibição, o <code>error_reporting</code> escolhe o que aparece — e da regra de ouro: <strong>ligado só em desenvolvimento</strong>. Num site no ar, mantenha desligado e acompanhe pelo log de erros. Com a exibição ativada, o PHP deixa de esconder o problema e passa a te dizer exatamente onde ele está.</p></p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/display-errors-php/" data-wpel-link="internal" target="_self">Display errors PHP: como exibir todos os erros do PHP</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16924</post-id>	</item>
		<item>
		<title>php.ini: o que é, onde fica e como configurar</title>
		<link>https://www.homehost.com.br/blog/tutoriais/php/php-ini/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Tue, 21 Jul 2026 11:48:54 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16908</guid>

					<description><![CDATA[<p>O php.ini é o arquivo de configuração do PHP — é nele que se define o comportamento da linguagem no servidor: quanto de memória cada script pode usar, por quanto tempo pode rodar, se os erros aparecem na tela, o tamanho máximo de upload e dezenas de outros ajustes. Cada linha do arquivo é uma [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini: o que é, onde fica e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>O php.ini é o arquivo de configuração do PHP — é nele que se define o comportamento da linguagem no servidor: quanto de memória cada script pode usar, por quanto tempo pode rodar, se os erros aparecem na tela, o tamanho máximo de upload e dezenas de outros ajustes.</strong> Cada linha do arquivo é uma &#8220;diretiva&#8221;: um parâmetro com um valor.</p>
</p>
<p class="wp-block-paragraph">Se você já se deparou com um erro de &#8220;memory size exhausted&#8221;, um upload que falha por ser grande demais, ou uma tela em branco sem mensagem de erro, a solução quase sempre passa pelo php.ini. Este guia explica o que é o arquivo, como descobrir onde ele está, como editá-lo (pelo cPanel ou direto no servidor), e quais são as principais diretivas que você pode ajustar.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>php.ini</strong> é o arquivo que controla o comportamento do PHP no servidor. Cada linha é uma <strong>diretiva</strong> no formato <code>diretiva = valor</code> (por exemplo, <code>memory_limit = 256M</code>). Para descobrir onde ele fica, rode <code>php --ini</code> no terminal ou use a função <code>phpinfo()</code>. Em <strong>hospedagem compartilhada</strong>, você normalmente não edita o arquivo direto: ajusta as diretivas pelo painel (no cPanel, em <em>Select PHP Version → Options</em>). Em <strong>VPS ou servidor dedicado</strong>, edita o arquivo diretamente.</p>
</div>
</p>
<h2 class="wp-block-heading">O que é o php.ini</h2>
</p>
<p class="wp-block-paragraph">O <strong>php.ini</strong> é o arquivo de configuração principal do <a href="https://www.homehost.com.br/blog/tutoriais/php/o-que-e-php/" data-wpel-link="internal" target="_self">PHP</a>. Toda vez que o PHP é iniciado, ele lê esse arquivo para saber como deve se comportar: quais recursos liberar, quais limites impor, o que fazer com os erros. É, na prática, o painel de controle da linguagem no servidor.</p>
</p>
<p class="wp-block-paragraph">O nome vem do formato do arquivo: <code>.ini</code> (de <em>initialization</em>), um formato de texto simples usado para configuração. Cada configuração é uma <strong>diretiva</strong>, escrita como uma chave e um valor separados por um sinal de igual:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">memory_limit = 256M<br />
max_execution_time = 30<br />
display_errors = Off<br />
upload_max_filesize = 64M</code>
</div>
</p>
<p class="wp-block-paragraph">Linhas que começam com ponto e vírgula (<code>;</code>) são comentários — o PHP as ignora. É por isso que, ao abrir um php.ini, você vê muitas linhas começando com <code>;</code>: são diretivas desativadas ou explicações.</p>
</p>
<h2 class="wp-block-heading">Onde fica o arquivo php.ini</h2>
</p>
<p class="wp-block-paragraph">A localização do php.ini varia conforme o sistema operacional e a forma como o PHP foi instalado — não há um único lugar fixo. Mas há duas formas rápidas de descobrir onde ele está.</p>
</p>
<h4 class="wp-block-heading">Pelo comando php &#8211;ini</h4>
</p>
<p class="wp-block-paragraph">Se você tem acesso ao terminal (<a href="https://www.homehost.com.br/blog/tutoriais/linux/ssh/" data-wpel-link="internal" target="_self">SSH</a>), o jeito mais direto é rodar:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">php --ini</code>
</div>
</p>
<p class="wp-block-paragraph">O comando mostra o caminho do arquivo carregado (na linha &#8220;Loaded Configuration File&#8221;) e de eventuais arquivos adicionais. Em sistemas Linux, o php.ini costuma ficar em caminhos como <code>/etc/php/8.x/apache2/php.ini</code> ou <code>/etc/php/8.x/cli/php.ini</code> — note que pode haver <strong>arquivos diferentes</strong> para o PHP do servidor web (Apache) e o da linha de comando (CLI).</p>
</p>
<h4 class="wp-block-heading">Pela função phpinfo()</h4>
</p>
<p class="wp-block-paragraph">Se você não tem acesso ao terminal, mas pode subir um arquivo PHP para o site, crie um arquivo com este conteúdo e acesse-o pelo navegador:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">&lt;?php phpinfo(); ?&gt;</code>
</div>
</p>
<p class="wp-block-paragraph">Na página gerada, procure por &#8220;Loaded Configuration File&#8221; — é o caminho do php.ini em uso. Um cuidado importante: <strong>apague esse arquivo depois de consultar</strong>, porque o <code>phpinfo()</code> expõe muitos detalhes do servidor que podem ajudar um atacante.</p>
</p>
<h2 class="wp-block-heading">Como editar o php.ini</h2>
</p>
<p class="wp-block-paragraph">Aqui está a parte que mais gera dúvida, porque depende do tipo de hospedagem. Depois de qualquer alteração, confirme que ela pegou: acesse novamente o <code><strong>phpinfo()</strong></code> (ou rode <code><strong>php -i</strong></code>) e veja se a diretiva está com o novo valor.</p>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Em hospedagem compartilhada, você não edita o arquivo direto</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">Na maioria das hospedagens compartilhadas, o php.ini é um arquivo global do servidor, compartilhado por todos os sites — por isso você não tem permissão para editá-lo diretamente. Em vez disso, o painel oferece uma interface para ajustar as diretivas só do seu site. No <strong>cPanel</strong>, isso fica em <em>Select PHP Version → Options</em>. As alterações feitas ali valem apenas para a sua conta, com segurança.</p>
</div>
</p>
<h3 class="wp-block-heading">No cPanel (hospedagem compartilhada)</h3>
</p>
<p class="wp-block-paragraph">Este é o caminho para a maioria dos sites hospedados. No cPanel:</p>
</p>
<ol class="wp-block-list">
<li>Acesse o cPanel e clique em <strong>Select PHP Version</strong> (Selecionar versão do PHP).</li>
</p>
<li>Clique em <strong>Switch To PHP Options</strong> (ou &#8220;Options&#8221;).</li>
</p>
<li>Você verá a lista de diretivas ajustáveis (memory_limit, max_execution_time, upload_max_filesize, display_errors, etc.).</li>
</p>
<li>Clique no valor da diretiva que quer mudar, escolha o novo valor e salve.</li>
</ol>
</p>
<p class="wp-block-paragraph">As mudanças entram em vigor na hora, sem precisar reiniciar nada, e afetam só o seu site. É o método recomendado para quem está em hospedagem compartilhada.</p>
</p>
<h3 class="wp-block-heading">Editando o arquivo diretamente (VPS ou dedicado)</h3>
</p>
<p class="wp-block-paragraph">Se você tem um <a href="https://www.homehost.com.br/servidores-vps/" data-wpel-link="external" target="_blank" rel="external noopener">VPS</a> ou servidor dedicado, com acesso de administrador, edita o arquivo diretamente:</p>
</p>
<ol class="wp-block-list">
<li>Localize o arquivo com <code>php --ini</code>.</li>
</p>
<li>Abra-o com um editor de texto (por exemplo, <code>nano /etc/php/8.x/apache2/php.ini</code>).</li>
</p>
<li>Encontre a diretiva (a busca do editor ajuda), altere o valor e salve.</li>
</p>
<li><strong>Reinicie o serviço</strong> para aplicar: o Apache (<code>systemctl restart apache2</code>) ou o PHP-FPM, conforme o seu setup.</li>
</ol>
</p>
<p class="wp-block-paragraph">O passo 4 é o que muita gente esquece: ao editar o arquivo direto, a mudança <strong>só vale depois de reiniciar</strong> o servidor web ou o PHP-FPM. Sem isso, o PHP continua com a configuração antiga em memória.</p>
</p>
<h3 class="wp-block-heading">Criando um php.ini próprio na hospedagem compartilhada</h3>
</p>
<p class="wp-block-paragraph">Muitas hospedagens compartilhadas, mesmo sem dar acesso ao php.ini global, permitem que você <strong>crie um arquivo de configuração próprio</strong> na pasta do seu site. Dependendo do servidor, ele se chama <code>php.ini</code> ou <code>.user.ini</code>, e vale só para o seu diretório e subpastas.</p>
</p>
<p class="wp-block-paragraph">Pelo gerenciador de arquivos do cPanel, na raiz do site (<code>public_html</code>), crie um arquivo novo chamado <code>php.ini</code> (ou <code>.user.ini</code>) e adicione só as diretivas que quer mudar, uma por linha:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">memory_limit = 256M<br />
upload_max_filesize = 64M<br />
max_execution_time = 120</code>
</div>
</p>
<p class="wp-block-paragraph">O <code>.user.ini</code> é o mecanismo do PHP (em instalações com PHP-FPM ou CGI) para configurações por diretório — funciona de forma parecida com o que o <code>.htaccess</code> faz para o Apache. Após criar o arquivo, a mudança pode levar alguns minutos para valer (o PHP relê o <code>.user.ini</code> periodicamente). Se o cPanel tiver o <strong>MultiPHP INI Editor</strong>, ele oferece essa mesma edição por uma interface gráfica, sem criar o arquivo à mão.</p>
</p>
<h3 class="wp-block-heading">Pelo .htaccess ou ini_set (alternativas)</h3>
</p>
<p class="wp-block-paragraph">Há ainda duas formas de ajustar diretivas sem tocar no php.ini, úteis quando você não tem acesso a ele:</p>
</p>
<ul class="wp-block-list">
<li>No <strong><a href="https://www.homehost.com.br/blog/internet/htaccess-aprenda-tudo-sobre-esse-arquivo/" data-wpel-link="internal" target="_self">.htaccess</a></strong> (só em Apache), com <code>php_value nome_da_diretiva valor</code>.</li>
</p>
<li>No <strong>próprio código PHP</strong>, com a função <code>ini_set('diretiva', 'valor')</code> — mas só funciona para diretivas que podem ser mudadas em tempo de execução.</li>
</ul>
</p>
<p class="wp-block-paragraph">Nem toda diretiva pode ser alterada por esses meios: algumas só valem se definidas no php.ini. Mas para ajustes comuns (como memory_limit ou display_errors), costumam funcionar.</p>
</p>
<h2 class="wp-block-heading">As principais diretivas do php.ini</h2>
</p>
<p class="wp-block-paragraph">O php.ini tem dezenas de diretivas. Estas são as que você mais provavelmente vai precisar ajustar, agrupadas por finalidade:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:600px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Diretiva</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que controla</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>memory_limit</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Memória máxima que um script pode usar</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>max_execution_time</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Tempo máximo que um script pode rodar</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>upload_max_filesize</code> / <code>post_max_size</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Tamanho máximo de upload e de dados enviados</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><a href="https://www.homehost.com.br/blog/tutoriais/php/display-errors-php" data-wpel-link="internal" target="_self">display_errors</a> / <code>error_reporting</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Se e quais erros aparecem na tela</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><a href="https://www.homehost.com.br/blog/tutoriais/php/max_input_vars/" data-wpel-link="internal" target="_self">max_input_vars</a> / <code>max_input_time</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Quantidade e tempo de processamento de dados de entrada</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><a href="https://www.homehost.com.br/blog/tutoriais/php/allow_url_fopen/" data-wpel-link="internal" target="_self">allow_url_fopen</a></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Se o PHP pode abrir arquivos por URL remota</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>date.timezone</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Fuso horário padrão usado pelas funções de data</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>session.save_path</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Onde as sessões são armazenadas</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Algumas dessas diretivas têm guias próprios com o passo a passo detalhado:</p>
</p>
<ul class="wp-block-list">
<li>Como aumentar o <a href="https://www.homehost.com.br/blog/tutoriais/php/memory_limit/" data-wpel-link="internal" target="_self">memory_limit</a> (resolve o erro &#8220;Allowed memory size exhausted&#8221;).</li>
</p>
<li>Como alterar o <a href="https://www.homehost.com.br/blog/tutoriais/php/max-execution-time/" data-wpel-link="internal" target="_self">max_execution_time</a> (resolve &#8220;Maximum execution time exceeded&#8221;).</li>
</p>
<li>Como ajustar o <a href="https://www.homehost.com.br/blog/tutoriais/php/upload-max-filesize-post-max-size/" data-wpel-link="internal" target="_self">upload_max_filesize e post_max_size</a> (resolve falhas em uploads grandes).</li>
</p>
<li>Como resolver o erro de <a href="https://www.homehost.com.br/blog/tutoriais/php/fatal-error-register-globals-deprecated/" data-wpel-link="internal" target="_self">register_globals</a> em aplicações legadas.</li>
</p>
<li>Como <a href="https://www.homehost.com.br/blog/tutoriais/php/display-errors-php/" data-wpel-link="internal" target="_self">exibir os erros do PHP</a> com display_errors e error_reporting (resolve a &#8220;tela branca&#8221; sem mensagem).</li>
</p>
<li>Como ajustar o <a href="https://www.homehost.com.br/blog/tutoriais/php/max_input_vars/" data-wpel-link="internal" target="_self">max_input_vars e max_input_time</a> (resolve menus e formulários que não salvam tudo).</li>
</p>
<li>O que é o <a href="https://www.homehost.com.br/blog/tutoriais/php/allow_url_fopen/" data-wpel-link="internal" target="_self">allow_url_fopen</a> e quando ativá-lo com segurança (acesso a URLs remotas).</li>
</ul>
</p>
<h2 class="wp-block-heading">Cuidados ao editar o php.ini</h2>
</p>
<p class="wp-block-paragraph">O php.ini é poderoso, e um valor errado pode ter efeitos indesejados:</p>
</p>
<ul class="wp-block-list">
<li><strong>Valores muito altos</strong> de memory_limit ou max_execution_time podem deixar um script problemático consumir recursos demais do servidor — em vez de resolver, mascaram o problema real.</li>
</p>
<li><strong>display_errors ligado em produção</strong> expõe caminhos de arquivos e detalhes internos a qualquer visitante; deve ficar ligado só em desenvolvimento.</li>
</p>
<li><strong>Erros de sintaxe</strong> no arquivo (uma diretiva escrita errado) podem impedir o PHP de iniciar. Ao editar direto, mude uma diretiva por vez e teste.</li>
</p>
<li><strong>Cuidado com php.ini em nível de diretório e malware:</strong> arquivos php.ini locais são um alvo conhecido de ataques — é comum malware criar ou alterar um php.ini numa pasta para mudar o comportamento do PHP sem ser notado. Se encontrar um php.ini que você não criou, ou diretivas estranhas num arquivo seu, investigue: pode ser sinal de site comprometido.</li>
</ul>
</p>
<p class="wp-block-paragraph">Uma boa prática, ao editar o arquivo diretamente, é comentar a linha original (colocando <code>;</code> na frente) e adicionar a nova logo abaixo, em vez de sobrescrever — assim você tem o valor antigo à mão para reverter.</p>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é o arquivo php.ini?</strong><br />É o arquivo de configuração do PHP. Ele é lido toda vez que o PHP inicia e define o comportamento da linguagem no servidor: limites de memória e tempo, exibição de erros, tamanho de upload e muitos outros ajustes. Cada configuração é uma diretiva, escrita no formato diretiva = valor.</p>
</p>
<p class="wp-block-paragraph"><strong>Onde fica o php.ini?</strong><br />A localização varia conforme o sistema operacional e a instalação. Para descobrir, rode <code>php --ini</code> no terminal e veja a linha &#8220;Loaded Configuration File&#8221;, ou crie um arquivo com <code>&lt;?php phpinfo(); ?&gt;</code>, acesse pelo navegador e procure o mesmo campo. Em Linux, costuma ficar em caminhos como /etc/php/8.x/apache2/php.ini.</p>
</p>
<p class="wp-block-paragraph"><strong>Como editar o php.ini na hospedagem compartilhada?</strong><br />Em hospedagem compartilhada você normalmente não edita o arquivo diretamente, porque ele é global. Use o painel: no cPanel, acesse Select PHP Version e depois Options, onde é possível ajustar as diretivas só do seu site. As mudanças valem na hora e afetam apenas a sua conta.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que minha alteração no php.ini não fez efeito?</strong><br />Se você editou o arquivo diretamente num VPS ou servidor dedicado, provavelmente faltou reiniciar o serviço: as mudanças só valem após reiniciar o Apache ou o PHP-FPM. Verifique também se editou o php.ini correto — pode haver um arquivo para o Apache e outro para a linha de comando (CLI), além de confirmar o caminho com php &#8211;ini.</p>
</p>
<p class="wp-block-paragraph"><strong>Como ver as configurações atuais do PHP?</strong><br />Crie um arquivo com <code>&lt;?php phpinfo(); ?&gt;</code>, envie para o seu site e acesse pelo navegador: a página mostra todas as diretivas e seus valores atuais. Lembre-se de apagar o arquivo depois, pois ele expõe informações do servidor. Pela linha de comando, <code>php -i</code> mostra as mesmas informações.</p>
</p>
<p class="wp-block-paragraph"><strong>Posso mudar configurações do PHP sem acesso ao php.ini?</strong><br />Sim, em muitos casos. No Apache, você pode usar o arquivo .htaccess com <code>php_value diretiva valor</code>. No próprio código, a função <code>ini_set()</code> altera diretivas em tempo de execução. Nem toda diretiva aceita esses métodos, mas os ajustes mais comuns, como memory_limit e display_errors, costumam funcionar.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é o arquivo php.ini?","acceptedAnswer":{"@type":"Answer","text":"É o arquivo de configuração do PHP. Ele é lido toda vez que o PHP inicia e define o comportamento da linguagem no servidor: limites de memória e tempo, exibição de erros, tamanho de upload e muitos outros ajustes. Cada configuração é uma diretiva, escrita no formato diretiva = valor."}},
    {"@type":"Question","name":"Onde fica o php.ini?","acceptedAnswer":{"@type":"Answer","text":"A localização varia conforme o sistema operacional e a instalação. Para descobrir, rode php --ini no terminal e veja a linha Loaded Configuration File, ou crie um arquivo com phpinfo(), acesse pelo navegador e procure o mesmo campo. Em Linux, costuma ficar em caminhos como /etc/php/8.x/apache2/php.ini."}},
    {"@type":"Question","name":"Como editar o php.ini na hospedagem compartilhada?","acceptedAnswer":{"@type":"Answer","text":"Em hospedagem compartilhada você normalmente não edita o arquivo diretamente, porque ele é global. Use o painel: no cPanel, acesse Select PHP Version e depois Options, onde é possível ajustar as diretivas só do seu site. As mudanças valem na hora e afetam apenas a sua conta."}},
    {"@type":"Question","name":"Por que minha alteração no php.ini não fez efeito?","acceptedAnswer":{"@type":"Answer","text":"Se você editou o arquivo diretamente num VPS ou servidor dedicado, provavelmente faltou reiniciar o serviço: as mudanças só valem após reiniciar o Apache ou o PHP-FPM. Verifique também se editou o php.ini correto, pois pode haver um arquivo para o Apache e outro para a linha de comando (CLI), além de confirmar o caminho com php --ini."}},
    {"@type":"Question","name":"Como ver as configurações atuais do PHP?","acceptedAnswer":{"@type":"Answer","text":"Crie um arquivo com phpinfo(), envie para o seu site e acesse pelo navegador: a página mostra todas as diretivas e seus valores atuais. Lembre-se de apagar o arquivo depois, pois ele expõe informações do servidor. Pela linha de comando, php -i mostra as mesmas informações."}},
    {"@type":"Question","name":"Posso mudar configurações do PHP sem acesso ao php.ini?","acceptedAnswer":{"@type":"Answer","text":"Sim, em muitos casos. No Apache, você pode usar o arquivo .htaccess com php_value diretiva valor. No próprio código, a função ini_set() altera diretivas em tempo de execução. Nem toda diretiva aceita esses métodos, mas os ajustes mais comuns, como memory_limit e display_errors, costumam funcionar."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">Controle total do PHP na sua hospedagem</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">Na Homehost você ajusta memory_limit, upload, versão do PHP e todas as diretivas direto pelo cPanel, em poucos cliques — e conta com suporte em português para configurar o ambiente ideal para o seu site.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-sites/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer a hospedagem Homehost<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">O php.ini é o centro de controle do PHP: um arquivo de texto onde cada diretiva ajusta um aspecto do comportamento da linguagem. O essencial para dominá-lo: <strong>descubra onde ele está</strong> com <code>php --ini</code> ou <code>phpinfo()</code>; <strong>edite pelo caminho certo</strong> — no cPanel (Select PHP Version → Options) se você está em hospedagem compartilhada, ou direto no arquivo (lembrando de reiniciar o serviço) se tem VPS ou dedicado; e <strong>conheça as diretivas principais</strong> — memory_limit, max_execution_time, upload_max_filesize, display_errors — que resolvem a maioria dos problemas do dia a dia. Com o php.ini sob controle, ajustar o ambiente PHP deixa de ser tentativa e erro e vira configuração consciente. </p>
</p>
<p class="wp-block-paragraph">Para consumir APIs e fazer requisições HTTP a partir do PHP, veja também o guia de <a href="https://www.homehost.com.br/blog/tutoriais/php/curl-php/" data-wpel-link="internal" target="_self">cURL no PHP</a>.</p></p>
<p>O post <a href="https://www.homehost.com.br/blog/tutoriais/php/php-ini/" data-wpel-link="internal" target="_self">php.ini: o que é, onde fica e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16908</post-id>	</item>
		<item>
		<title>nslookup: o que é e como usar para consultar o DNS</title>
		<link>https://www.homehost.com.br/blog/internet/nslookup/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Sun, 19 Jul 2026 10:11:54 +0000</pubDate>
				<category><![CDATA[Internet]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16881</guid>

					<description><![CDATA[<p>O nslookup é um comando que consulta o DNS: você dá a ele um domínio, e ele devolve as informações registradas no DNS daquele domínio — o endereço IP, o servidor de e-mail, os registros de texto e outros. É a ferramenta mais universal para investigar DNS, presente no Windows, no macOS e no Linux, [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/internet/nslookup/" data-wpel-link="internal" target="_self">nslookup: o que é e como usar para consultar o DNS</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>O nslookup é um comando que consulta o DNS: você dá a ele um domínio, e ele devolve as informações registradas no DNS daquele domínio — o <a href="https://www.homehost.com.br/blog/internet/o-que-e-endereco-ip/" data-wpel-link="internal" target="_self">endereço IP</a>, o servidor de e-mail, os registros de texto e outros.</strong> É a ferramenta mais universal para investigar DNS, presente no Windows, no macOS e no Linux, sem precisar instalar nada.</p>
</p>
<p class="wp-block-paragraph">Se você já configurou um domínio, mudou um servidor de e-mail ou tentou descobrir por que um site não carrega, o nslookup é o instrumento que responde à pergunta &#8220;o que o DNS está dizendo sobre este domínio agora?&#8221;. Este guia mostra o que é o nslookup, como usá-lo para consultar cada tipo de registro, como interpretar a resposta, e por que às vezes ele parece &#8220;mentir&#8221; — além da diferença para o dig, seu primo mais moderno.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>nslookup</strong> (name server lookup) é um comando de terminal que consulta o <strong>DNS</strong> de um domínio. No uso mais simples, <code>nslookup seusite.com.br</code> devolve o endereço IP. Para consultar um tipo específico de registro, use <code>-type=</code>: por exemplo, <code>nslookup -type=mx seusite.com.br</code> mostra o servidor de e-mail, e <code>-type=txt</code> mostra os registros TXT. Funciona no <strong>Windows, macOS e Linux</strong> sem instalar nada.</p>
</div>
</p>
<p class="wp-block-paragraph"><div id="ez-toc-container" class="ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit">Conteúdo</p>
<span class="ez-toc-title-toggle"></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="https://www.homehost.com.br/blog/internet/nslookup/#O_que_e_o_nslookup" title="O que é o nslookup" data-wpel-link="internal" target="_self">O que é o nslookup</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="https://www.homehost.com.br/blog/internet/nslookup/#Como_abrir_o_nslookup" title="Como abrir o nslookup" data-wpel-link="internal" target="_self">Como abrir o nslookup</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="https://www.homehost.com.br/blog/internet/nslookup/#O_uso_mais_basico_descobrir_o_IP_de_um_dominio" title="O uso mais básico: descobrir o IP de um domínio" data-wpel-link="internal" target="_self">O uso mais básico: descobrir o IP de um domínio</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="https://www.homehost.com.br/blog/internet/nslookup/#Como_ler_a_resposta_do_nslookup" title="Como ler a resposta do nslookup" data-wpel-link="internal" target="_self">Como ler a resposta do nslookup</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="https://www.homehost.com.br/blog/internet/nslookup/#Consultando_cada_tipo_de_registro_com_-type" title="Consultando cada tipo de registro com -type=" data-wpel-link="internal" target="_self">Consultando cada tipo de registro com -type=</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="https://www.homehost.com.br/blog/internet/nslookup/#Consultando_um_servidor_DNS_especifico" title="Consultando um servidor DNS específico" data-wpel-link="internal" target="_self">Consultando um servidor DNS específico</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="https://www.homehost.com.br/blog/internet/nslookup/#O_modo_interativo" title="O modo interativo" data-wpel-link="internal" target="_self">O modo interativo</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-8" href="https://www.homehost.com.br/blog/internet/nslookup/#Por_que_o_nslookup_as_vezes_parece_%E2%80%9Cmentir%E2%80%9D" title="Por que o nslookup às vezes parece &#8220;mentir&#8221;" data-wpel-link="internal" target="_self">Por que o nslookup às vezes parece &#8220;mentir&#8221;</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="https://www.homehost.com.br/blog/internet/nslookup/#nslookup_vs_dig_qual_usar" title="nslookup vs dig: qual usar" data-wpel-link="internal" target="_self">nslookup vs dig: qual usar</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="https://www.homehost.com.br/blog/internet/nslookup/#nslookup_para_diagnosticar_problemas" title="nslookup para diagnosticar problemas" data-wpel-link="internal" target="_self">nslookup para diagnosticar problemas</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="https://www.homehost.com.br/blog/internet/nslookup/#Perguntas_frequentes" title="Perguntas frequentes" data-wpel-link="internal" target="_self">Perguntas frequentes</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-12" href="https://www.homehost.com.br/blog/internet/nslookup/#Conclusao" title="Conclusão" data-wpel-link="internal" target="_self">Conclusão</a></li></ul></nav></div>
</p>
</p>
<h2 class="wp-block-heading">O que é o nslookup</h2>
</p>
<p class="wp-block-paragraph">O <strong>nslookup</strong> — de <em>name server lookup</em>, ou &#8220;consulta ao servidor de nomes&#8221; — é uma ferramenta de linha de comando para consultar o <a href="https://www.homehost.com.br/blog/internet/o-que-e-servidor-dns/" data-wpel-link="internal" target="_self">DNS</a>. Ele faz, manualmente e sob demanda, o mesmo tipo de pergunta que o seu navegador faz automaticamente toda vez que você acessa um site: &#8220;qual é o endereço deste domínio?&#8221;.</p>
</p>
<p class="wp-block-paragraph">A diferença é que, com o nslookup, <strong>você</strong> faz a pergunta, escolhe exatamente o que quer saber, e vê a resposta crua do servidor DNS — sem a intermediação do navegador. Isso o torna a ferramenta padrão para verificar se um registro foi configurado corretamente, diagnosticar por que um e-mail ou site não funciona, e confirmar se uma alteração no DNS já se propagou.</p>
</p>
<p class="wp-block-paragraph">Ele vem instalado por padrão em praticamente todos os sistemas — Windows, macOS e Linux —, e por isso é a primeira ferramenta que se alcança quando algo relacionado a DNS precisa ser investigado.</p>
</p>
<h2 class="wp-block-heading">Como abrir o nslookup</h2>
</p>
<p class="wp-block-paragraph">O nslookup roda no terminal do seu sistema:</p>
</p>
<ul class="wp-block-list">
<li><strong>Windows:</strong> abra o <strong>Prompt de Comando</strong> (tecle <code>Win + R</code>, digite <code>cmd</code> e Enter) ou o PowerShell.</li>
</p>
<li><strong>macOS:</strong> abra o <strong>Terminal</strong> (em Aplicativos → Utilitários).</li>
</p>
<li><strong>Linux:</strong> abra o seu <strong>terminal</strong> de preferência.</li>
</ul>
</p>
<p class="wp-block-paragraph">Em todos eles, o comando é digitado da mesma forma. Se o nslookup não estiver disponível em alguma distribuição Linux enxuta, ele faz parte do pacote de utilitários de DNS (como o <code>dnsutils</code> ou <code>bind-utils</code>), que também traz o dig.</p>
</p>
<h2 class="wp-block-heading">O uso mais básico: descobrir o IP de um domínio</h2>
</p>
<p class="wp-block-paragraph">A forma mais simples do comando é digitar <code>nslookup</code> seguido do domínio:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">nslookup homehost.com.br</code>
</div>
</p>
<p class="wp-block-paragraph">A resposta vem mais ou menos assim:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">Servidor:   dns.google<br />
Address:    8.8.8.8</p>
<p>Resposta não autoritativa:<br />
Nome:    homehost.com.br<br />
Address: 200.151.24.50</code>
</div>
</p>
<p class="wp-block-paragraph">Isso já traz duas informações importantes, e entender cada linha é a chave para usar o nslookup bem — o que veremos a seguir.</p>
</p>
<h2 class="wp-block-heading">Como ler a resposta do nslookup</h2>
</p>
<p class="wp-block-paragraph">A saída do nslookup confunde muita gente por causa das primeiras linhas. Vamos por partes:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:560px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Linha</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que significa</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>Servidor / Address (topo)</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Qual servidor DNS <em>respondeu</em> à consulta (não é o resultado)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>Resposta não autoritativa</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O resultado veio do cache do resolvedor, não direto do dono da zona</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>Nome / Address (embaixo)</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O resultado de verdade: o domínio e o IP a que ele resolve</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Os dois pontos que mais geram dúvida:</p>
</p>
<p class="wp-block-paragraph"><strong>As primeiras linhas não são a resposta.</strong> O &#8220;Servidor&#8221; e o &#8220;Address&#8221; do topo dizem apenas <strong>quem</strong> respondeu — normalmente o seu resolvedor de DNS (o do provedor, ou o <code>8.8.8.8</code> se você usa o Google). A resposta que você quer está embaixo, em &#8220;Nome&#8221; e &#8220;Address&#8221;.</p>
</p>
<p class="wp-block-paragraph"><strong>&#8220;Resposta não autoritativa&#8221; é normal, não é erro.</strong> Significa apenas que a resposta veio do <strong>cache</strong> de um resolvedor intermediário, e não diretamente do servidor autoritativo (o dono da zona). Na esmagadora maioria das consultas é o que você verá, e está tudo certo — é assim que o DNS funciona no dia a dia.</p>
</p>
<h2 class="wp-block-heading">Consultando cada tipo de registro com -type=</h2>
</p>
<p class="wp-block-paragraph">Aqui está o que torna o nslookup poderoso: o parâmetro <strong><code>-type=</code></strong>, que permite pedir um tipo específico de registro em vez do IP padrão. É assim que você inspeciona toda a configuração de um domínio:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:600px;">
<thead>
<tr style="background-color:#0b3d91; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #0b3d91;">Comando</th>
<th style="padding:12px 14px; border:1px solid #0b3d91;">O que retorna</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>nslookup -type=a dominio</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O endereço IPv4 (registro A)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>nslookup -type=aaaa dominio</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O endereço <a href="https://www.homehost.com.br/blog/internet/ipv6/" data-wpel-link="internal" target="_self">IPv6</a> (registro AAAA)</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>nslookup -type=mx dominio</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Os servidores de e-mail e suas prioridades (<a href="https://www.homehost.com.br/blog/internet/registro-mx/" data-wpel-link="internal" target="_self">registro MX</a>)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>nslookup -type=txt dominio</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Os registros de texto: SPF, DKIM, verificações (<a href="https://www.homehost.com.br/blog/internet/registro-txt/" data-wpel-link="internal" target="_self">registro TXT</a>)</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>nslookup -type=cname sub.dominio</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O apelido para onde o nome aponta (<a href="https://www.homehost.com.br/blog/internet/registro-cname/" data-wpel-link="internal" target="_self">registro CNAME</a>)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>nslookup -type=ns dominio</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Os servidores de nomes que respondem pela zona (registro NS)</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>nslookup -type=ptr IP</code></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O nome associado a um IP (<a href="https://www.homehost.com.br/blog/internet/dns-reverso/" data-wpel-link="internal" target="_self">DNS reverso</a>, registro PTR)</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Cada um desses corresponde a um tipo de registro da zona DNS — e é a forma prática de verificar cada configuração. Quer confirmar se o <a href="https://www.homehost.com.br/blog/internet/registro-mx/" data-wpel-link="internal" target="_self">registro MX</a> do seu domínio aponta para o servidor certo? <code>nslookup -type=mx</code>. Publicou um SPF e quer ver se está no ar? <code>nslookup -type=txt</code>. Cada guia de registro da nossa série usa exatamente esse comando para a verificação.</p>
</p>
<h2 class="wp-block-heading">Consultando um servidor DNS específico</h2>
</p>
<p class="wp-block-paragraph">Por padrão, o nslookup pergunta ao resolvedor configurado no seu sistema. Mas você pode <strong>escolher a qual servidor perguntar</strong>, colocando o IP do servidor no final do comando:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">nslookup homehost.com.br 8.8.8.8</code>
</div>
</p>
<p class="wp-block-paragraph">Esse comando consulta diretamente o <a href="https://www.homehost.com.br/blog/internet/dns-do-google/" data-wpel-link="internal" target="_self">DNS do Google</a> (<code>8.8.8.8</code>), ignorando o resolvedor do seu provedor. É uma técnica valiosa por dois motivos:</p>
</p>
<ul class="wp-block-list">
<li><strong>Testar propagação:</strong> consultando servidores diferentes (o do seu provedor, o do Google, o da Cloudflare), você vê se uma alteração recente já chegou a todos — porque a <a href="https://www.homehost.com.br/blog/perguntas-frequentes/o-que-e-propagacao-de-dns/" data-wpel-link="internal" target="_self">propagação de DNS</a> não acontece ao mesmo tempo em todo lugar.</li>
</p>
<li><strong>Contornar cache local:</strong> se o seu provedor ainda tem um valor antigo em cache, perguntar direto a outro servidor mostra o valor mais atual.</li>
</ul>
</p>
<h3 class="wp-block-heading">O modo interativo</h3>
</p>
<p class="wp-block-paragraph">Se você digitar apenas <code>nslookup</code> e Enter, sem um domínio, ele entra no <strong>modo interativo</strong> — um prompt próprio onde você pode fazer várias consultas seguidas sem redigitar o comando:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">nslookup<br />
> set type=mx<br />
> homehost.com.br<br />
> set type=txt<br />
> homehost.com.br<br />
> exit</code>
</div>
</p>
<p class="wp-block-paragraph">Dentro dele, <code>set type=</code> muda o tipo de registro para as próximas consultas, e você digita um domínio por vez. Para sair, digite <code>exit</code>. O modo interativo é conveniente quando você vai inspecionar vários registros de um mesmo domínio em sequência.</p>
</p>
<h2 class="wp-block-heading">Por que o nslookup às vezes parece &#8220;mentir&#8221;</h2>
</p>
<p class="wp-block-paragraph">Um ponto que confunde e vale entender: às vezes o nslookup mostra um valor que <strong>não bate</strong> com o que você acabou de configurar, ou que difere do que outra pessoa vê. Isso raramente é um bug — é o <strong>cache</strong> em ação.</p>
</p>
<p class="wp-block-paragraph">O nslookup, por padrão, pergunta ao seu resolvedor, que <strong>guarda respostas em cache</strong> por um tempo (o TTL do registro). Se você mudou um registro há pouco, o resolvedor pode ainda estar servindo o valor antigo até o cache expirar. Por isso:</p>
</p>
<ul class="wp-block-list">
<li>Uma alteração recente pode não aparecer imediatamente — é a <a href="https://www.homehost.com.br/blog/perguntas-frequentes/o-que-e-propagacao-de-dns/" data-wpel-link="internal" target="_self">propagação de DNS</a> em curso.</li>
</p>
<li>Consultar direto o servidor autoritativo (ou um resolvedor público como o <code>8.8.8.8</code>) pode mostrar um valor diferente do resolvedor do seu provedor.</li>
</p>
<li>Duas pessoas em provedores diferentes podem ver respostas diferentes durante uma janela de propagação.</li>
</ul>
</p>
<p class="wp-block-paragraph">Entender isso evita o erro clássico de concluir que &#8220;o registro está errado&#8221; quando, na verdade, ele só ainda não propagou.</p>
</p>
<h2 class="wp-block-heading">nslookup vs dig: qual usar</h2>
</p>
<p class="wp-block-paragraph">Se você pesquisou sobre consulta de DNS, provavelmente encontrou também o <strong>dig</strong>. Os dois fazem o mesmo trabalho essencial, mas têm perfis diferentes:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:560px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Aspecto</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">nslookup</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">dig</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Disponibilidade</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Windows, Mac e Linux por padrão</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Mac e Linux; no Windows precisa instalar</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Facilidade</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Mais simples de ler</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Saída mais técnica e detalhada</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Público típico</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Uso geral, primeira consulta</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Diagnóstico avançado</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Na prática: o nslookup é a escolha natural no Windows e para consultas rápidas do dia a dia. O dig é preferido por quem trabalha com redes e quer ver todos os detalhes da resposta (TTL exato, seção de autoridade, tempo de consulta). O equivalente ao <code>nslookup -type=mx dominio</code> no dig é <code>dig dominio MX +short</code>. Saber os dois é útil; começar pelo nslookup é o caminho mais simples.</p>
</p>
<h2 class="wp-block-heading">nslookup para diagnosticar problemas</h2>
</p>
<p class="wp-block-paragraph">O nslookup é uma das primeiras ferramentas em qualquer diagnóstico de DNS. Alguns usos práticos:</p>
</p>
<ul class="wp-block-list">
<li><strong>Site não carrega:</strong> <code>nslookup dominio</code> — se não retorna IP, o problema é de DNS, não do servidor do site.</li>
</p>
<li><strong>E-mail não chega:</strong> <code>nslookup -type=mx dominio</code> — confirma se há registro MX e se aponta para o servidor certo.</li>
</p>
<li><strong>Verificação de domínio falha:</strong> <code>nslookup -type=txt dominio</code> — checa se o registro TXT de verificação foi publicado.</li>
</p>
<li><strong>Trocou de hospedagem:</strong> <code>nslookup -type=ns dominio</code> — mostra se os servidores de nomes já são os novos.</li>
</ul>
</p>
<p class="wp-block-paragraph">Se a consulta revela que o DNS está mesmo com problema, o passo seguinte é diagnosticar a causa — e para isso há um guia dedicado sobre <a href="https://www.homehost.com.br/blog/dominio/como-resolver-problema-de-dns/" data-wpel-link="internal" target="_self">como resolver problemas de DNS</a>, que usa o nslookup junto de outras técnicas.</p>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é o nslookup?</strong><br />É um comando de terminal usado para consultar o DNS de um domínio. O nome vem de <em>name server lookup</em>. Com ele, você pergunta ao DNS informações sobre um domínio — o endereço IP, o servidor de e-mail, os registros de texto e outros — e vê a resposta diretamente, sem a intermediação do navegador. Está disponível no Windows, macOS e Linux por padrão.</p>
</p>
<p class="wp-block-paragraph"><strong>Como usar o nslookup no Windows?</strong><br />Abra o Prompt de Comando (tecle Win + R, digite cmd e Enter) e digite <code>nslookup</code> seguido do domínio, por exemplo <code>nslookup seusite.com.br</code>. Para consultar um tipo específico de registro, use o parâmetro -type, como em <code>nslookup -type=mx seusite.com.br</code>. O comando funciona da mesma forma no PowerShell.</p>
</p>
<p class="wp-block-paragraph"><strong>Como consultar o registro MX com o nslookup?</strong><br />Use o comando <code>nslookup -type=mx seusite.com.br</code>. Ele retorna os servidores de e-mail do domínio com suas prioridades. É a forma mais rápida de conferir se o registro MX está configurado e apontando para o servidor certo, útil quando um domínio não recebe e-mails.</p>
</p>
<p class="wp-block-paragraph"><strong>O que significa &#8220;resposta não autoritativa&#8221; no nslookup?</strong><br />Significa que a resposta veio do cache de um servidor DNS intermediário (o resolvedor), e não diretamente do servidor autoritativo, que é o dono da zona do domínio. Não é um erro: é o comportamento normal da maioria das consultas, já que o DNS usa cache para ser rápido.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual a diferença entre nslookup e dig?</strong><br />Os dois consultam o DNS, mas o nslookup vem instalado por padrão no Windows, Mac e Linux e tem uma saída mais simples, enquanto o dig oferece uma resposta mais técnica e detalhada, sendo preferido em diagnósticos avançados. No Windows, o dig precisa ser instalado à parte. Para o dia a dia, o nslookup costuma bastar.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que o nslookup mostra um resultado diferente do que configurei?</strong><br />Quase sempre por causa do cache. O resolvedor de DNS guarda as respostas por um tempo (o TTL), então uma alteração recente pode não aparecer até o cache expirar — é a propagação de DNS em andamento. Consultar diretamente outro servidor, como o 8.8.8.8, colocando o IP dele no fim do comando, costuma mostrar o valor mais atual.</p>
</p>
<p class="wp-block-paragraph"><strong>Como consultar um servidor DNS específico com o nslookup?</strong><br />Coloque o IP do servidor no final do comando, depois do domínio. Por exemplo, <code>nslookup seusite.com.br 8.8.8.8</code> consulta diretamente o DNS do Google, ignorando o resolvedor do seu provedor. É útil para testar a propagação de uma alteração e para contornar um cache local desatualizado.</p>
</p>
<p class="wp-block-paragraph"><strong>O nslookup funciona no Linux e no Mac?</strong><br />Sim. O nslookup está disponível no macOS e na maioria das distribuições Linux, além do Windows. Em algumas distribuições Linux mínimas pode ser preciso instalar o pacote de utilitários de DNS (como dnsutils ou bind-utils), que também inclui o dig.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é o nslookup?","acceptedAnswer":{"@type":"Answer","text":"É um comando de terminal usado para consultar o DNS de um domínio. O nome vem de name server lookup. Com ele, você pergunta ao DNS informações sobre um domínio (o endereço IP, o servidor de e-mail, os registros de texto e outros) e vê a resposta diretamente, sem a intermediação do navegador. Está disponível no Windows, macOS e Linux por padrão."}},
    {"@type":"Question","name":"Como usar o nslookup no Windows?","acceptedAnswer":{"@type":"Answer","text":"Abra o Prompt de Comando (tecle Win + R, digite cmd e Enter) e digite nslookup seguido do domínio, por exemplo nslookup seusite.com.br. Para consultar um tipo específico de registro, use o parâmetro -type, como em nslookup -type=mx seusite.com.br. O comando funciona da mesma forma no PowerShell."}},
    {"@type":"Question","name":"Como consultar o registro MX com o nslookup?","acceptedAnswer":{"@type":"Answer","text":"Use o comando nslookup -type=mx seusite.com.br. Ele retorna os servidores de e-mail do domínio com suas prioridades. É a forma mais rápida de conferir se o registro MX está configurado e apontando para o servidor certo, útil quando um domínio não recebe e-mails."}},
    {"@type":"Question","name":"O que significa resposta não autoritativa no nslookup?","acceptedAnswer":{"@type":"Answer","text":"Significa que a resposta veio do cache de um servidor DNS intermediário (o resolvedor), e não diretamente do servidor autoritativo, que é o dono da zona do domínio. Não é um erro: é o comportamento normal da maioria das consultas, já que o DNS usa cache para ser rápido."}},
    {"@type":"Question","name":"Qual a diferença entre nslookup e dig?","acceptedAnswer":{"@type":"Answer","text":"Os dois consultam o DNS, mas o nslookup vem instalado por padrão no Windows, Mac e Linux e tem uma saída mais simples, enquanto o dig oferece uma resposta mais técnica e detalhada, sendo preferido em diagnósticos avançados. No Windows, o dig precisa ser instalado à parte. Para o dia a dia, o nslookup costuma bastar."}},
    {"@type":"Question","name":"Por que o nslookup mostra um resultado diferente do que configurei?","acceptedAnswer":{"@type":"Answer","text":"Quase sempre por causa do cache. O resolvedor de DNS guarda as respostas por um tempo (o TTL), então uma alteração recente pode não aparecer até o cache expirar, o que é a propagação de DNS em andamento. Consultar diretamente outro servidor, como o 8.8.8.8, colocando o IP dele no fim do comando, costuma mostrar o valor mais atual."}},
    {"@type":"Question","name":"Como consultar um servidor DNS específico com o nslookup?","acceptedAnswer":{"@type":"Answer","text":"Coloque o IP do servidor no final do comando, depois do domínio. Por exemplo, nslookup seusite.com.br 8.8.8.8 consulta diretamente o DNS do Google, ignorando o resolvedor do seu provedor. É útil para testar a propagação de uma alteração e para contornar um cache local desatualizado."}},
    {"@type":"Question","name":"O nslookup funciona no Linux e no Mac?","acceptedAnswer":{"@type":"Answer","text":"Sim. O nslookup está disponível no macOS e na maioria das distribuições Linux, além do Windows. Em algumas distribuições Linux mínimas pode ser preciso instalar o pacote de utilitários de DNS (como dnsutils ou bind-utils), que também inclui o dig."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"></circle><path d="m21 21-4.3-4.3"></path></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">DNS configurado e sem dor de cabeça</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">Na hospedagem da Homehost o DNS do seu domínio já vem pronto e apontado, com registros A, MX e TXT configurados — e suporte em português para quando você precisar conferir qualquer coisa.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-sites/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer a hospedagem Homehost<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">O nslookup é a lupa do DNS: um comando simples, presente em qualquer sistema, que responde à pergunta &#8220;o que o DNS diz sobre este domínio?&#8221;. Guarde o essencial: <code>nslookup dominio</code> traz o IP, e o parâmetro <strong><code>-type=</code></strong> abre a porta para todos os outros registros — <code>mx</code> para e-mail, <code>txt</code> para SPF e verificações, <code>ns</code> para servidores de nomes, <code>ptr</code> para o reverso. Ao ler a resposta, lembre que as primeiras linhas dizem só <strong>quem respondeu</strong>, e que &#8220;resposta não autoritativa&#8221; é normal. E quando um valor não bate com o esperado, o culpado quase sempre é o cache — não o registro. Com o nslookup na mão, configurar e diagnosticar DNS deixa de ser adivinhação e vira verificação.</p></p>
<p>O post <a href="https://www.homehost.com.br/blog/internet/nslookup/" data-wpel-link="internal" target="_self">nslookup: o que é e como usar para consultar o DNS</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16881</post-id>	</item>
		<item>
		<title>Registro TXT: o que é, para que serve e como configurar</title>
		<link>https://www.homehost.com.br/blog/internet/registro-txt/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Sun, 19 Jul 2026 09:57:12 +0000</pubDate>
				<category><![CDATA[Internet]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16873</guid>

					<description><![CDATA[<p>Um registro TXT é um campo de texto livre no DNS de um domínio, usado para guardar informações que outros serviços leem — principalmente para autenticar e-mail e provar a propriedade do domínio. Diferente de registros como o A ou o MX, que têm um formato rígido, o TXT aceita praticamente qualquer texto. É essa [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/internet/registro-txt/" data-wpel-link="internal" target="_self">Registro TXT: o que é, para que serve e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>Um registro TXT é um campo de texto livre no DNS de um domínio, usado para guardar informações que outros serviços leem — principalmente para autenticar e-mail e provar a propriedade do domínio.</strong> Diferente de registros como o A ou o MX, que têm um formato rígido, o TXT aceita praticamente qualquer texto. É essa flexibilidade que fez dele o &#8220;canivete suíço&#8221; do DNS.</p>
</p>
<p class="wp-block-paragraph">Se você já configurou SPF, DKIM ou verificou um domínio no Google, você usou um registro TXT — mesmo sem perceber. Este guia explica o que é o registro TXT, para que ele serve na prática, as regras técnicas que causam a maioria dos erros (aspas e limite de caracteres), e o passo a passo para adicionar um no Registro.br ou em qualquer painel de DNS.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>registro TXT</strong> guarda <strong>texto livre</strong> na zona DNS de um domínio, para que serviços externos leiam. Seus usos mais comuns são a <strong>autenticação de e-mail</strong> (SPF, DKIM e DMARC são todos registros TXT) e a <strong>verificação de propriedade de domínio</strong> (Google, Microsoft e outros pedem um TXT para confirmar que o domínio é seu). Ao contrário do CNAME, <strong>vários registros TXT podem coexistir no mesmo nome</strong>. Para consultar: <code>nslookup -type=txt seusite.com.br</code> ou <code>dig seusite.com.br TXT +short</code>.</p>
</div>
</p>
<p class="wp-block-paragraph"><div id="ez-toc-container" class="ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit">Conteúdo</p>
<span class="ez-toc-title-toggle"></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="https://www.homehost.com.br/blog/internet/registro-txt/#O_que_e_um_registro_TXT" title="O que é um registro TXT" data-wpel-link="internal" target="_self">O que é um registro TXT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="https://www.homehost.com.br/blog/internet/registro-txt/#Para_que_serve_o_registro_TXT" title="Para que serve o registro TXT" data-wpel-link="internal" target="_self">Para que serve o registro TXT</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="https://www.homehost.com.br/blog/internet/registro-txt/#Autenticacao_de_e-mail_SPF_DKIM_DMARC" title="Autenticação de e-mail (SPF, DKIM, DMARC)" data-wpel-link="internal" target="_self">Autenticação de e-mail (SPF, DKIM, DMARC)</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="https://www.homehost.com.br/blog/internet/registro-txt/#Verificacao_de_propriedade_de_dominio" title="Verificação de propriedade de domínio" data-wpel-link="internal" target="_self">Verificação de propriedade de domínio</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="https://www.homehost.com.br/blog/internet/registro-txt/#Validacao_de_certificado_SSL" title="Validação de certificado SSL" data-wpel-link="internal" target="_self">Validação de certificado SSL</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="https://www.homehost.com.br/blog/internet/registro-txt/#As_regras_do_registro_TXT_onde_a_maioria_erra" title="As regras do registro TXT (onde a maioria erra)" data-wpel-link="internal" target="_self">As regras do registro TXT (onde a maioria erra)</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="https://www.homehost.com.br/blog/internet/registro-txt/#Como_consultar_um_registro_TXT" title="Como consultar um registro TXT" data-wpel-link="internal" target="_self">Como consultar um registro TXT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-8" href="https://www.homehost.com.br/blog/internet/registro-txt/#Como_adicionar_um_registro_TXT_no_Registrobr" title="Como adicionar um registro TXT no Registro.br" data-wpel-link="internal" target="_self">Como adicionar um registro TXT no Registro.br</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="https://www.homehost.com.br/blog/internet/registro-txt/#Como_adicionar_um_registro_TXT_em_qualquer_painel_de_DNS" title="Como adicionar um registro TXT em qualquer painel de DNS" data-wpel-link="internal" target="_self">Como adicionar um registro TXT em qualquer painel de DNS</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="https://www.homehost.com.br/blog/internet/registro-txt/#Problemas_comuns_com_o_registro_TXT" title="Problemas comuns com o registro TXT" data-wpel-link="internal" target="_self">Problemas comuns com o registro TXT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="https://www.homehost.com.br/blog/internet/registro-txt/#Registro_TXT_e_os_outros_registros_DNS" title="Registro TXT e os outros registros DNS" data-wpel-link="internal" target="_self">Registro TXT e os outros registros DNS</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-12" href="https://www.homehost.com.br/blog/internet/registro-txt/#Perguntas_frequentes" title="Perguntas frequentes" data-wpel-link="internal" target="_self">Perguntas frequentes</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-13" href="https://www.homehost.com.br/blog/internet/registro-txt/#Conclusao" title="Conclusão" data-wpel-link="internal" target="_self">Conclusão</a></li></ul></nav></div>
</p>
</p>
<h2 class="wp-block-heading">O que é um registro TXT</h2>
</p>
<p class="wp-block-paragraph">Os registros de DNS mais conhecidos têm um trabalho único e um formato fixo: o registro A guarda um <a href="https://www.homehost.com.br/blog/internet/o-que-e-endereco-ip/" data-wpel-link="internal" target="_self">endereço IP</a>, o <a href="https://www.homehost.com.br/blog/internet/registro-mx/" data-wpel-link="internal" target="_self">registro MX</a> guarda o servidor de e-mail, o <a href="https://www.homehost.com.br/blog/internet/registro-cname/" data-wpel-link="internal" target="_self">CNAME</a> guarda um apelido. Cada um só aceita o tipo de dado para o qual foi feito.</p>
</p>
<p class="wp-block-paragraph">O <strong>registro TXT</strong> (de <em>text</em>) é diferente: ele guarda <strong>texto livre</strong>. Foi criado originalmente para associar notas legíveis por humanos a um domínio, mas com o tempo virou um espaço de uso geral — um lugar onde qualquer serviço pode publicar uma informação para ser lida por outros servidores na internet.</p>
</p>
<p class="wp-block-paragraph">A ideia é simples: você coloca um texto no DNS do seu domínio, e qualquer serviço no mundo pode consultá-lo. Como o DNS é público e confiável, e só quem controla o domínio pode editar seus registros, um TXT vira uma forma de o dono do domínio <strong>declarar algo publicamente e de forma verificável</strong>. É essa característica que sustenta quase todos os usos modernos do TXT.</p>
</p>
<h2 class="wp-block-heading">Para que serve o registro TXT</h2>
</p>
<p class="wp-block-paragraph">Na prática, o TXT é usado hoje para algumas finalidades bem definidas:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:560px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Uso</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que faz</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>Autenticação de e-mail</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">SPF, DKIM e DMARC são publicados como registros TXT</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>Verificação de domínio</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Provar a um serviço (Google, Microsoft) que o domínio é seu</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>Validação de certificado</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Emitir um SSL provando o domínio via DNS (validação DNS-01)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>Notas e metadados</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Informações diversas que serviços específicos leem</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Os dois primeiros são, de longe, os mais comuns — e vale detalhar cada um.</p>
</p>
<h3 class="wp-block-heading">Autenticação de e-mail (SPF, DKIM, DMARC)</h3>
</p>
<p class="wp-block-paragraph">O uso mais frequente do TXT hoje é a autenticação de e-mail. Os três protocolos que protegem um domínio contra falsificação e garantem a entrega das mensagens — <strong>SPF, DKIM e DMARC</strong> — são todos publicados como registros TXT no DNS.</p>
</p>
<p class="wp-block-paragraph">Um registro SPF, por exemplo, é um TXT que começa com <code>v=spf1</code> e lista os servidores autorizados a enviar e-mail pelo domínio. O DMARC é um TXT no nome <code>_dmarc</code> com a política de tratamento. Ou seja: quando alguém diz &#8220;publique o SPF no seu DNS&#8221;, o que está pedindo é a criação de um registro TXT.</p>
</p>
<p class="wp-block-paragraph">Como esse é um assunto grande por si só, ele tem um guia próprio: veja <a href="https://www.homehost.com.br/blog/contas-de-email/spf-dkim-dmarc/" data-wpel-link="internal" target="_self">SPF, DKIM e DMARC</a> para entender como os três funcionam e como configurá-los. Aqui, o que importa reter é que <strong>o &#8220;envelope&#8221; de todos eles é o registro TXT</strong>.</p>
</p>
<h3 class="wp-block-heading">Verificação de propriedade de domínio</h3>
</p>
<p class="wp-block-paragraph">O segundo grande uso: provar que um domínio é seu. Quando você vai usar um serviço que precisa confiar que você controla um domínio — Google Workspace, Microsoft 365, Search Console, ferramentas de e-mail marketing, redes sociais para empresas —, ele quase sempre pede uma <strong>verificação por TXT</strong>.</p>
</p>
<p class="wp-block-paragraph">O funcionamento é engenhoso: o serviço gera um valor único (algo como <code>google-site-verification=aBc123...</code>) e pede que você o publique como um TXT no DNS do domínio. Só quem controla o domínio consegue fazer isso. O serviço então consulta o DNS, encontra o valor exato que gerou, e conclui: &#8220;esta pessoa realmente controla este domínio&#8221;. Feito isso, o TXT de verificação pode até ser removido — ele já cumpriu o papel.</p>
</p>
<p class="wp-block-paragraph">É rápido, não afeta o funcionamento do site nem do e-mail, e por isso virou o método padrão de verificação de propriedade na internet.</p>
</p>
<h3 class="wp-block-heading">Validação de certificado SSL</h3>
</p>
<p class="wp-block-paragraph">Há ainda um uso técnico importante: emitir um <a href="https://www.homehost.com.br/blog/ssl/certificado-ssl/" data-wpel-link="internal" target="_self">certificado SSL</a> provando o domínio pelo DNS, em vez de por um arquivo no servidor. Essa é a <strong>validação DNS-01</strong>, em que a autoridade certificadora pede um TXT específico para confirmar o controle do domínio — o único caminho para certificados <em>wildcard</em>. O detalhe desse processo está no guia da <a href="https://www.homehost.com.br/blog/internet/porta-80/" data-wpel-link="internal" target="_self">porta 80</a>, que compara os métodos de validação.</p>
</p>
<h2 class="wp-block-heading">As regras do registro TXT (onde a maioria erra)</h2>
</p>
<p class="wp-block-paragraph">O TXT é flexível, mas tem algumas regras técnicas que causam a maior parte dos erros de configuração.</p>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Aspas e o limite de 255 caracteres</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">Cada &#8220;string&#8221; dentro de um registro TXT tem um <strong>limite de 255 caracteres</strong>. Valores maiores (como uma chave DKIM longa) precisam ser <strong>divididos em várias strings entre aspas</strong>, uma seguida da outra — o servidor DNS as junta na leitura. E o conteúdo do TXT costuma ir <strong>entre aspas duplas</strong>. A maioria dos painéis cuida das aspas automaticamente, mas em painéis manuais o descuido com aspas e com o limite é a causa nº1 de um TXT que &#8220;não funciona&#8221;.</p>
</div>
</p>
<p class="wp-block-paragraph">Além disso, uma regra que diferencia o TXT dos demais — e que é o oposto exato da regra do CNAME:</p>
</p>
<p class="wp-block-paragraph"><strong>Vários registros TXT podem coexistir no mesmo nome.</strong> Enquanto um nome com <a href="https://www.homehost.com.br/blog/internet/registro-cname/" data-wpel-link="internal" target="_self">CNAME</a> não pode ter nenhum outro registro, um mesmo nome pode ter <strong>quantos TXT forem necessários</strong> — é comum um domínio ter, ao mesmo tempo, um TXT de SPF, um de verificação do Google, um de verificação da Microsoft, e assim por diante. Eles convivem sem conflito, porque cada serviço procura o TXT com o prefixo que reconhece (<code>v=spf1</code>, <code>google-site-verification=</code>, etc.) e ignora os demais.</p>
</p>
<p class="wp-block-paragraph">Há uma exceção importante dentro dessa regra: <strong>só pode haver um registro SPF por domínio</strong>. Não é uma limitação do TXT em si, mas do SPF — ter dois TXT de SPF no mesmo nome invalida a autenticação. Se você usa vários serviços de envio, eles devem ser combinados em um único registro SPF, não em vários.</p>
</p>
<h2 class="wp-block-heading">Como consultar um registro TXT</h2>
</p>
<p class="wp-block-paragraph">Verificar os registros TXT de um domínio é a forma mais rápida de conferir se um SPF, um DMARC ou uma verificação foram publicados corretamente:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">Windows / Mac / Linux:   nslookup -type=txt seusite.com.br</p>
<p>Mac / Linux (mais direto):   dig seusite.com.br TXT +short</code>
</div>
</p>
<p class="wp-block-paragraph">O comando <a href="https://www.homehost.com.br/blog/internet/nslookup/" data-wpel-link="internal" target="_self">nslookup</a> devolve <strong>todos</strong> os registros TXT daquele nome — normalmente você verá vários, um para cada serviço. Para checar um TXT em um subdomínio específico (como o <code>_dmarc</code> ou uma chave DKIM), basta consultar o nome completo, por exemplo <code><strong>nslookup -type=txt _dmarc.seusite.com.br</strong></code> .</p>
</p>
<p class="wp-block-paragraph">Fazer essa consulta depois de qualquer alteração é essencial, porque a mudança só vale após a <a href="https://www.homehost.com.br/blog/perguntas-frequentes/o-que-e-propagacao-de-dns/" data-wpel-link="internal" target="_self">propagação de DNS</a> — muitos serviços de verificação falham simplesmente porque foram checados cedo demais.</p>
</p>
<h2 class="wp-block-heading">Como adicionar um registro TXT no Registro.br</h2>
</p>
<p class="wp-block-paragraph">Para domínios <code>.br</code> que usam o DNS do Registro.br:</p>
</p>
<ol class="wp-block-list">
<li>Acesse <strong>registro.br</strong> e faça login com a conta dona do domínio.</li>
</p>
<li>Selecione o domínio e vá em <strong>Editar zona DNS</strong>.</li>
</p>
<li>Adicione uma nova entrada do tipo <strong>TXT</strong>.</li>
</p>
<li>No campo de <strong>nome</strong>, coloque o que o serviço pedir: em branco ou <code>@</code> para o domínio raiz (caso mais comum, como o SPF), ou o nome específico (como <code>_dmarc</code>).</li>
</p>
<li>No <strong>valor</strong>, cole exatamente o texto fornecido pelo serviço — sem alterar nada, respeitando maiúsculas, minúsculas e sinais.</li>
</p>
<li>Salve a zona e aguarde a propagação.</li>
</ol>
</p>
<p class="wp-block-paragraph">O ponto mais importante é o passo 5: <strong>cole o valor exatamente como recebido</strong>. Um espaço a mais, uma letra trocada ou uma aspa removida faz a verificação falhar. Copie e cole diretamente da tela do serviço, sem digitar à mão.</p>
</p>
<h2 class="wp-block-heading">Como adicionar um registro TXT em qualquer painel de DNS</h2>
</p>
<p class="wp-block-paragraph">Se o DNS do seu domínio é gerenciado pela hospedagem, o processo é feito no painel dela (como o cPanel), mas os campos são sempre os mesmos:</p>
</p>
<ul class="wp-block-list">
<li><strong>Tipo:</strong> TXT</li>
</p>
<li><strong>Nome / Host:</strong> o nome do registro (<code>@</code>, <code>_dmarc</code>, ou o que o serviço indicar)</li>
</p>
<li><strong>Valor / Conteúdo / TXT Data:</strong> o texto a ser publicado</li>
</p>
<li><strong>TTL:</strong> pode deixar o padrão</li>
</ul>
</p>
<p class="wp-block-paragraph">Vale o mesmo cuidado do Registro.br: cole o valor exato e confirme, antes de tudo, <strong>onde o DNS do domínio está sendo gerenciado</strong> — se está no Registro.br ou na hospedagem. Adicionar o TXT no painel errado é um erro comum, e o registro simplesmente não aparece nas consultas porque foi criado numa zona que não é a que responde pelo domínio.</p>
</p>
<h2 class="wp-block-heading">Problemas comuns com o registro TXT</h2>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:600px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Sintoma</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Causa provável</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que fazer</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">A verificação de domínio não conclui</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">TXT ainda não propagou, ou valor com erro de digitação</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Confira com <code>nslookup -type=txt</code> e aguarde a propagação</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">DKIM longo não valida</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Chave passou de 255 caracteres numa só string</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Divida o valor em strings entre aspas</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">SPF parou de funcionar</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Existe mais de um TXT de SPF no domínio</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Combine tudo em um único registro SPF</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O TXT não aparece na consulta</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Criado na zona errada (Registro.br x hospedagem)</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Adicione no painel que controla o DNS do domínio</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Valor &#8220;certo&#8221; mas rejeitado</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Espaço extra, aspa faltando ou caractere trocado</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Copie e cole o valor exato, sem digitar à mão</td>
</tr>
</tbody>
</table>
</div>
</p>
<h2 class="wp-block-heading">Registro TXT e os outros registros DNS</h2>
</p>
<p class="wp-block-paragraph">O TXT é um entre os vários tipos de registro que compõem uma zona DNS. Veja onde ele se encaixa:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:560px;">
<thead>
<tr style="background-color:#0b3d91; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #0b3d91;">Registro</th>
<th style="padding:12px 14px; border:1px solid #0b3d91;">Guarda</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>A / AAAA</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um endereço IP (IPv4 / IPv6)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>CNAME</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um apelido para outro nome</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>MX</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O servidor de e-mail do domínio</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>TXT</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Texto livre (autenticação, verificação)</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Para entender como todos eles se organizam dentro da zona DNS de um domínio, o guia do <a href="https://www.homehost.com.br/blog/internet/o-que-e-servidor-dns/" data-wpel-link="internal" target="_self">servidor DNS</a> mostra o quadro completo.</p>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é um registro TXT?</strong><br />É um tipo de registro DNS que guarda texto livre associado a um domínio. Diferente de registros com formato fixo, como o A ou o MX, o TXT aceita praticamente qualquer texto, para que serviços externos o leiam. Seus usos mais comuns são a autenticação de e-mail (SPF, DKIM, DMARC) e a verificação de propriedade de domínio.</p>
</p>
<p class="wp-block-paragraph"><strong>Para que serve o registro TXT?</strong><br />Serve principalmente para dois fins: autenticar o e-mail do domínio (o SPF, o DKIM e o DMARC são todos registros TXT) e provar a propriedade do domínio a serviços como Google e Microsoft, que pedem a publicação de um TXT único. Também é usado para validação de certificados SSL pelo DNS e para guardar metadados diversos.</p>
</p>
<p class="wp-block-paragraph"><strong>SPF e DKIM são registros TXT?</strong><br />Sim. Tanto o SPF quanto o DKIM e o DMARC são publicados como registros TXT no DNS do domínio. O SPF é um TXT que lista os servidores autorizados a enviar e-mail; o DMARC é um TXT no nome _dmarc com a política; e o DKIM é um TXT com a chave pública. Por isso, configurar autenticação de e-mail é, na prática, criar registros TXT.</p>
</p>
<p class="wp-block-paragraph"><strong>Posso ter vários registros TXT no mesmo domínio?</strong><br />Sim. Ao contrário do CNAME, vários registros TXT podem coexistir no mesmo nome — é normal um domínio ter um TXT de SPF, um de verificação do Google e outros ao mesmo tempo. A única exceção é o SPF: deve haver apenas um registro SPF por domínio, combinando todos os serviços de envio em uma só linha.</p>
</p>
<p class="wp-block-paragraph"><strong>Como adicionar um registro TXT no Registro.br?</strong><br />Acesse o registro.br, faça login, selecione o domínio e vá em Editar zona DNS. Adicione uma entrada do tipo TXT, informando o nome (em branco ou @ para a raiz, ou o nome específico como _dmarc) e colando no valor exatamente o texto fornecido pelo serviço. Salve e aguarde a propagação. O mais importante é colar o valor sem alterar nada.</p>
</p>
<p class="wp-block-paragraph"><strong>Como consultar os registros TXT de um domínio?</strong><br />Use <code>nslookup -type=txt seusite.com.br</code> no Windows, Mac ou Linux, ou <code>dig seusite.com.br TXT +short</code> no Mac e Linux. O comando lista todos os registros TXT do nome. Para um subdomínio específico, como uma verificação DKIM ou o DMARC, consulte o nome completo, por exemplo _dmarc.seusite.com.br.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que meu registro TXT não funciona?</strong><br />As causas mais comuns são: a propagação de DNS ainda não terminou; o valor foi digitado com algum erro (um espaço extra, uma letra trocada); uma chave longa passou de 255 caracteres sem ser dividida em strings; ou o registro foi criado na zona errada (no Registro.br quando o DNS está na hospedagem, ou vice-versa). Confira sempre com nslookup ou dig.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual o limite de tamanho de um registro TXT?</strong><br />Cada string dentro de um registro TXT tem o limite de 255 caracteres. Valores maiores, como chaves DKIM, precisam ser divididos em várias strings entre aspas, colocadas em sequência — o servidor DNS as concatena na leitura. A maioria dos painéis modernos faz essa divisão automaticamente, mas em painéis manuais é preciso atenção.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é um registro TXT?","acceptedAnswer":{"@type":"Answer","text":"É um tipo de registro DNS que guarda texto livre associado a um domínio. Diferente de registros com formato fixo, como o A ou o MX, o TXT aceita praticamente qualquer texto, para que serviços externos o leiam. Seus usos mais comuns são a autenticação de e-mail (SPF, DKIM, DMARC) e a verificação de propriedade de domínio."}},
    {"@type":"Question","name":"Para que serve o registro TXT?","acceptedAnswer":{"@type":"Answer","text":"Serve principalmente para dois fins: autenticar o e-mail do domínio (o SPF, o DKIM e o DMARC são todos registros TXT) e provar a propriedade do domínio a serviços como Google e Microsoft, que pedem a publicação de um TXT único. Também é usado para validação de certificados SSL pelo DNS e para guardar metadados diversos."}},
    {"@type":"Question","name":"SPF e DKIM são registros TXT?","acceptedAnswer":{"@type":"Answer","text":"Sim. Tanto o SPF quanto o DKIM e o DMARC são publicados como registros TXT no DNS do domínio. O SPF é um TXT que lista os servidores autorizados a enviar e-mail; o DMARC é um TXT no nome _dmarc com a política; e o DKIM é um TXT com a chave pública. Por isso, configurar autenticação de e-mail é, na prática, criar registros TXT."}},
    {"@type":"Question","name":"Posso ter vários registros TXT no mesmo domínio?","acceptedAnswer":{"@type":"Answer","text":"Sim. Ao contrário do CNAME, vários registros TXT podem coexistir no mesmo nome. É normal um domínio ter um TXT de SPF, um de verificação do Google e outros ao mesmo tempo. A única exceção é o SPF: deve haver apenas um registro SPF por domínio, combinando todos os serviços de envio em uma só linha."}},
    {"@type":"Question","name":"Como adicionar um registro TXT no Registro.br?","acceptedAnswer":{"@type":"Answer","text":"Acesse o registro.br, faça login, selecione o domínio e vá em Editar zona DNS. Adicione uma entrada do tipo TXT, informando o nome (em branco ou arroba para a raiz, ou o nome específico como _dmarc) e colando no valor exatamente o texto fornecido pelo serviço. Salve e aguarde a propagação. O mais importante é colar o valor sem alterar nada."}},
    {"@type":"Question","name":"Como consultar os registros TXT de um domínio?","acceptedAnswer":{"@type":"Answer","text":"Use nslookup -type=txt seusite.com.br no Windows, Mac ou Linux, ou dig seusite.com.br TXT +short no Mac e Linux. O comando lista todos os registros TXT do nome. Para um subdomínio específico, como uma verificação DKIM ou o DMARC, consulte o nome completo, por exemplo _dmarc.seusite.com.br."}},
    {"@type":"Question","name":"Por que meu registro TXT não funciona?","acceptedAnswer":{"@type":"Answer","text":"As causas mais comuns são: a propagação de DNS ainda não terminou; o valor foi digitado com algum erro, como um espaço extra ou uma letra trocada; uma chave longa passou de 255 caracteres sem ser dividida em strings; ou o registro foi criado na zona errada, no Registro.br quando o DNS está na hospedagem, ou vice-versa. Confira sempre com nslookup ou dig."}},
    {"@type":"Question","name":"Qual o limite de tamanho de um registro TXT?","acceptedAnswer":{"@type":"Answer","text":"Cada string dentro de um registro TXT tem o limite de 255 caracteres. Valores maiores, como chaves DKIM, precisam ser divididos em várias strings entre aspas, colocadas em sequência, e o servidor DNS as concatena na leitura. A maioria dos painéis modernos faz essa divisão automaticamente, mas em painéis manuais é preciso atenção."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">E-mail profissional com autenticação pronta</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">No e-mail profissional da Homehost os registros TXT de SPF, DKIM e DMARC já vêm configurados, e o DNS fica num painel simples com suporte em português — sem você caçar campo, contar caractere nem se perder nas aspas.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-e-mails/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer o e-mail profissional<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">O registro TXT é o campo de texto livre do DNS — o mais flexível de todos, e por isso o mais versátil. Guarde o essencial: ele serve, acima de tudo, para <strong>autenticar e-mail</strong> (SPF, DKIM e DMARC são todos TXT) e para <strong>provar a propriedade de um domínio</strong> a serviços externos; ao contrário do CNAME, <strong>vários TXT convivem no mesmo nome</strong> (com a única exceção do SPF, que deve ser único); e a maioria dos erros vem de detalhes de digitação — um valor colado errado, uma aspa faltando ou o limite de 255 caracteres. Na dúvida, um <code>nslookup -type=txt</code> mostra exatamente o que está publicado. Com isso, o TXT deixa de ser aquele campo misterioso do painel e vira uma ferramenta que você configura com confiança.</p>
</p>
<p class="wp-block-paragraph">
<p>O post <a href="https://www.homehost.com.br/blog/internet/registro-txt/" data-wpel-link="internal" target="_self">Registro TXT: o que é, para que serve e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16873</post-id>	</item>
		<item>
		<title>Registro MX (DNS MX): o que é, prioridade e como configurar</title>
		<link>https://www.homehost.com.br/blog/internet/registro-mx/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Sun, 19 Jul 2026 09:29:16 +0000</pubDate>
				<category><![CDATA[Internet]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16864</guid>

					<description><![CDATA[<p>O registro MX é o que diz para onde vai o e-mail de um domínio. Quando alguém envia uma mensagem para contato@seusite.com.br, o servidor de quem envia consulta o registro MX do seusite.com.br para descobrir qual servidor de e-mail deve receber aquela mensagem. Sem um MX correto, o domínio simplesmente não recebe e-mail. MX vem [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/internet/registro-mx/" data-wpel-link="internal" target="_self">Registro MX (DNS MX): o que é, prioridade e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>O registro MX é o que diz para onde vai o e-mail de um domínio.</strong> Quando alguém envia uma mensagem para <code>contato@seusite.com.br</code>, o servidor de quem envia consulta o registro MX do <code>seusite.com.br</code> para descobrir qual servidor de e-mail deve receber aquela mensagem. Sem um MX correto, o domínio simplesmente não recebe e-mail.</p>
</p>
<p class="wp-block-paragraph">MX vem de <em>Mail eXchanger</em> (trocador de correio). É um dos registros DNS mais importantes de qualquer domínio que use e-mail — e um dos que mais gera confusão, por causa de um número que aparece ao lado dele e quase ninguém explica: a <strong>prioridade</strong>. Este guia cobre o que é o registro MX, como a prioridade funciona, por que ele nunca pode apontar para um CNAME, e o passo a passo para configurar ou alterar o MX no Registro.br e no cPanel.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>registro MX</strong> (Mail eXchanger) é o registro DNS que indica <strong>para qual servidor entregar o e-mail</strong> de um domínio. Cada MX tem um número de <strong>prioridade</strong>: <strong>quanto menor o número, maior a prioridade</strong> — o servidor de menor número recebe primeiro, e os outros servem de backup. Regra importante: <strong>o MX deve apontar para um nome com registro A, nunca para um CNAME</strong>. Para conferir o MX de um domínio: <code>nslookup -type=mx seusite.com.br</code> ou <code>dig seusite.com.br MX +short</code>.</p>
</div>
</p>
<p class="wp-block-paragraph"><div id="ez-toc-container" class="ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit">Conteúdo</p>
<span class="ez-toc-title-toggle"></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="https://www.homehost.com.br/blog/internet/registro-mx/#O_que_e_o_registro_MX" title="O que é o registro MX" data-wpel-link="internal" target="_self">O que é o registro MX</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="https://www.homehost.com.br/blog/internet/registro-mx/#A_prioridade_do_MX_o_numero_que_confunde_todo_mundo" title="A prioridade do MX: o número que confunde todo mundo" data-wpel-link="internal" target="_self">A prioridade do MX: o número que confunde todo mundo</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="https://www.homehost.com.br/blog/internet/registro-mx/#O_MX_nunca_aponta_para_um_CNAME" title="O MX nunca aponta para um CNAME" data-wpel-link="internal" target="_self">O MX nunca aponta para um CNAME</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="https://www.homehost.com.br/blog/internet/registro-mx/#Como_consultar_o_registro_MX_de_um_dominio" title="Como consultar o registro MX de um domínio" data-wpel-link="internal" target="_self">Como consultar o registro MX de um domínio</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="https://www.homehost.com.br/blog/internet/registro-mx/#Como_configurar_o_registro_MX_no_Registrobr" title="Como configurar o registro MX no Registro.br" data-wpel-link="internal" target="_self">Como configurar o registro MX no Registro.br</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="https://www.homehost.com.br/blog/internet/registro-mx/#Como_configurar_MX_no_cPanel_e_para_o_Google" title="Como configurar MX no cPanel (e para o Google)" data-wpel-link="internal" target="_self">Como configurar MX no cPanel (e para o Google)</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="https://www.homehost.com.br/blog/internet/registro-mx/#MX_e_os_outros_registros_de_e-mail" title="MX e os outros registros de e-mail" data-wpel-link="internal" target="_self">MX e os outros registros de e-mail</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-8" href="https://www.homehost.com.br/blog/internet/registro-mx/#Problemas_comuns_com_o_registro_MX" title="Problemas comuns com o registro MX" data-wpel-link="internal" target="_self">Problemas comuns com o registro MX</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="https://www.homehost.com.br/blog/internet/registro-mx/#Perguntas_frequentes" title="Perguntas frequentes" data-wpel-link="internal" target="_self">Perguntas frequentes</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="https://www.homehost.com.br/blog/internet/registro-mx/#Conclusao" title="Conclusão" data-wpel-link="internal" target="_self">Conclusão</a></li></ul></nav></div>
</p>
</p>
<h2 class="wp-block-heading">O que é o registro MX</h2>
</p>
<p class="wp-block-paragraph">Quando você envia um e-mail, ele não vai direto para o computador do destinatário. Ele vai para o <strong>servidor de e-mail</strong> responsável pelo domínio de destino, que guarda a mensagem até o destinatário buscá-la. A pergunta é: como o servidor de quem envia descobre qual é esse servidor de destino?</p>
</p>
<p class="wp-block-paragraph">A resposta é o <strong>registro MX</strong>. Ele fica na <a href="https://www.homehost.com.br/blog/internet/o-que-e-servidor-dns/" data-wpel-link="internal" target="_self">zona DNS</a> do domínio e aponta para o nome do servidor que deve receber os e-mails daquele domínio:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">Nome            TIPO   Prioridade   Valor<br />
--------------------------------------------------------<br />
seusite.com.br  MX     10           mail.seusite.com.br<br />
mail.seusite.com.br  A            200.151.24.50</code>
</div>
</p>
<p class="wp-block-paragraph">O fluxo é este: alguém envia para <code>contato@seusite.com.br</code> → o servidor de envio consulta o MX do <code>seusite.com.br</code> → o MX responde <code>mail.seusite.com.br</code> → o servidor de envio resolve o registro A desse nome, obtém o IP e entrega a mensagem ali. Tudo isso em frações de segundo, antes de a mensagem sair.</p>
</p>
<p class="wp-block-paragraph">É por isso que o MX é o registro que &#8220;liga&#8221; o e-mail: um domínio pode ter o site em um servidor e o e-mail em outro, e é o MX que define esse segundo destino de forma independente.</p>
</p>
<h2 class="wp-block-heading">A prioridade do MX: o número que confunde todo mundo</h2>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Menor número = maior prioridade</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">Todo registro MX tem um número de <strong>prioridade</strong>, e a lógica é invertida do que parece: <strong>quanto menor o número, mais importante o servidor</strong>. Um MX com prioridade <strong>10</strong> recebe antes de um com prioridade <strong>20</strong>. O de número maior só entra em ação se o de menor número estiver indisponível. Não existe &#8220;prioridade alta&#8221; com número alto — é o contrário.</p>
</div>
</p>
<p class="wp-block-paragraph">Um domínio pode ter <strong>vários registros MX</strong>, e é aí que a prioridade importa. Ela cria uma ordem de preferência entre os servidores:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:520px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Prioridade</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Servidor</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Papel</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>10</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">mail.seusite.com.br</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Principal — recebe tudo</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>20</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">mail2.seusite.com.br</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Backup — só se o principal cair</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">O servidor de envio sempre tenta o <strong>menor número primeiro</strong>. Se aquele servidor não responde, ele passa para o próximo em ordem crescente. Isso dá <strong>redundância</strong>: se o servidor principal ficar fora do ar, o backup recebe as mensagens e as repassa quando o principal voltar, em vez de o e-mail simplesmente falhar.</p>
</p>
<p class="wp-block-paragraph">E se dois MX têm o <strong>mesmo número</strong>? Aí o tráfego é distribuído entre eles, de forma aproximadamente igual — é uma maneira de fazer <em>balanceamento de carga</em> entre servidores equivalentes.</p>
</p>
<p class="wp-block-paragraph">Para a maioria dos domínios, porém, a configuração é simples: um ou dois registros MX que o próprio provedor de e-mail define. Os números específicos vêm prontos na documentação de quem hospeda o seu e-mail.</p>
</p>
<h2 class="wp-block-heading">O MX nunca aponta para um CNAME</h2>
</p>
<p class="wp-block-paragraph">Uma regra que causa erros silenciosos: <strong>o valor de um registro MX deve ser um nome com registro A (ou AAAA) — nunca um <a href="https://www.homehost.com.br/blog/internet/registro-cname/" data-wpel-link="internal" target="_self">CNAME</a></strong>.</p>
</p>
<p class="wp-block-paragraph">O motivo está na especificação do DNS. Quando um servidor de envio consulta o MX e recebe um nome, ele espera resolver esse nome direto para um IP. Se esse nome for um apelido (CNAME) apontando para outro nome, cria-se uma indireção que a especificação proíbe nesse contexto — e muitos servidores de e-mail rejeitam ou tratam mal essa configuração.</p>
</p>
<p class="wp-block-paragraph">Na prática: o MX deve apontar para algo como <code>mail.seusite.com.br</code>, e <strong>esse</strong> nome precisa ter um registro A com o IP do servidor. Apontar o MX para um nome que é CNAME é um erro comum e difícil de diagnosticar, porque às vezes funciona em alguns servidores e falha em outros.</p>
</p>
<h2 class="wp-block-heading">Como consultar o registro MX de um domínio</h2>
</p>
<p class="wp-block-paragraph">Verificar o MX de qualquer domínio é rápido, e útil para confirmar uma configuração ou diagnosticar por que um e-mail não chega:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">Windows / Mac / Linux:   nslookup -type=mx seusite.com.br</p>
<p>Mac / Linux (mais direto):   dig seusite.com.br MX +short</code>
</div>
</p>
<p class="wp-block-paragraph">O comando <a href="https://www.homehost.com.br/blog/internet/nslookup/" data-wpel-link="internal" target="_self">nslookup</a> devolve os servidores MX do domínio com suas prioridades. Se não vier nada, o domínio não tem MX configurado — e não recebe e-mail. Além da linha de comando, há ferramentas web de <em>MX lookup</em> que fazem a mesma consulta pelo navegador e ainda checam se os servidores respondem.</p>
</p>
<p class="wp-block-paragraph">Vale um teste rápido sempre que você configurar ou alterar o e-mail de um domínio: consultar o MX confirma, em segundos, se a mudança já está valendo (lembrando que ela depende da <a href="https://www.homehost.com.br/blog/perguntas-frequentes/o-que-e-propagacao-de-dns/" data-wpel-link="internal" target="_self">propagação de DNS</a>).</p>
</p>
<h2 class="wp-block-heading">Como configurar o registro MX no Registro.br</h2>
</p>
<p class="wp-block-paragraph">Para domínios <code>.br</code> que usam o DNS do próprio Registro.br, o caminho é este:</p>
</p>
<ol class="wp-block-list">
<li>Acesse <strong>registro.br</strong> e faça login com a conta dona do domínio.</li>
</p>
<li>Clique no domínio e vá em <strong>Editar zona DNS</strong> (ou &#8220;DNS&#8221; → &#8220;Editar zona&#8221;).</li>
</p>
<li>Adicione uma nova entrada do tipo <strong>MX</strong>.</li>
</p>
<li>No campo de <strong>nome</strong>, deixe em branco ou use <code>@</code> para se referir ao domínio raiz.</li>
</p>
<li>No <strong>valor</strong>, informe o servidor de e-mail (por exemplo, <code>mail.seusite.com.br</code>), e no campo de <strong>prioridade</strong>, o número (comece com <code>10</code> para o principal).</li>
</p>
<li>Salve a zona.</li>
</ol>
</p>
<p class="wp-block-paragraph">Um cuidado que evita a falha mais comum: <strong>remova os registros MX antigos</strong> ao trocar de provedor de e-mail. Deixar um MX antigo junto do novo faz parte das mensagens irem para o servidor errado — e o problema aparece de forma intermitente, difícil de rastrear.</p>
</p>
<p class="wp-block-paragraph">Se o seu domínio não usa o DNS do Registro.br, mas sim o da sua hospedagem, a edição é feita no painel dela (como o cPanel), e não no Registro.br. Vale conferir onde está o DNS do domínio antes de procurar o campo de MX no lugar errado.</p>
</p>
<h2 class="wp-block-heading">Como configurar MX no cPanel (e para o Google)</h2>
</p>
<p class="wp-block-paragraph">Em hospedagens com cPanel, o MX é editado na ferramenta <strong>Roteamento de e-mail</strong> (ou &#8220;Entrada MX&#8221;). Lá você define se o e-mail é entregue <strong>localmente</strong> (no próprio servidor da hospedagem) ou em um <strong>servidor remoto</strong> — este último é o caso de quem usa Google Workspace, Microsoft 365 ou outro serviço externo.</p>
</p>
<p class="wp-block-paragraph">O passo a passo detalhado para apontar o MX a um serviço externo, com o exemplo do Google, está no guia de <a href="https://www.homehost.com.br/blog/contas-de-email/servidor-mx-externo-google-apps/" data-wpel-link="internal" target="_self">como configurar um MX externo do Google no cPanel</a>. A ideia central: ao usar um e-mail externo, o roteamento passa para &#8220;servidor remoto&#8221; e os MX apontam para os servidores do provedor escolhido.</p>
</p>
<h2 class="wp-block-heading">MX e os outros registros de e-mail</h2>
</p>
<p class="wp-block-paragraph">O MX não trabalha sozinho. Ele diz <em>para onde</em> o e-mail vai, mas quem garante que ele <em>chegue à caixa de entrada</em> (e não ao spam) é um conjunto de registros que atuam juntos:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:560px;">
<thead>
<tr style="background-color:#0b3d91; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #0b3d91;">Registro</th>
<th style="padding:12px 14px; border:1px solid #0b3d91;">Papel no e-mail</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>MX</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Diz para qual servidor entregar o e-mail recebido</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>A</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Resolve o nome do servidor de e-mail para o IP</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong><a href="https://www.homehost.com.br/blog/internet/registro-txt/" data-wpel-link="internal" target="_self">TXT (SPF/DKIM/DMARC)</a></strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Autenticam o envio e evitam o spam</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>PTR (DNS reverso)</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Valida o IP de envio na outra ponta</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">Vale entender a divisão: o MX cuida do <strong>recebimento</strong> (por onde o e-mail entra no seu domínio); já o <a href="https://www.homehost.com.br/blog/contas-de-email/spf-dkim-dmarc/" data-wpel-link="internal" target="_self">SPF, DKIM e DMARC</a> e o <a href="https://www.homehost.com.br/blog/internet/dns-reverso/" data-wpel-link="internal" target="_self">DNS reverso</a> cuidam do <strong>envio</strong> e da reputação. Um domínio com MX certo recebe e-mail; um domínio com todos eles certos recebe <strong>e</strong> consegue entregar sem cair no spam. E o servidor por trás do MX se conecta pelas <a href="https://www.homehost.com.br/blog/contas-de-email/porta-smtp-imap-e-pop3-configuracoes-de-email/" data-wpel-link="internal" target="_self">portas de e-mail</a> padrão (como a 25, entre servidores).</p>
</p>
<h2 class="wp-block-heading">Problemas comuns com o registro MX</h2>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:600px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Sintoma</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Causa provável</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que fazer</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Domínio não recebe nenhum e-mail</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Sem registro MX, ou MX apontando errado</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Confira com <code>nslookup -type=mx</code></td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">E-mail vai para o servidor antigo</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">MX antigo não foi removido</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Apague os MX que não são mais usados</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Funciona às vezes, falha em outras</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">MX apontando para um CNAME</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Aponte o MX para um nome com registro A</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Alterei o MX e nada mudou</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Propagação de DNS ainda em curso</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Aguarde e teste de novo com dig/nslookup</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Edito o MX no Registro.br e não aplica</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">DNS do domínio é o da hospedagem, não o do Registro.br</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Edite no painel que realmente controla o DNS</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">O último caso é mais comum do que parece: a pessoa altera o MX no Registro.br, mas o domínio aponta os servidores DNS para a hospedagem — então a edição no Registro.br não tem efeito nenhum, porque quem responde pela zona é outro. Antes de editar, confirme <strong>onde</strong> o DNS do domínio está sendo gerenciado.</p>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é um registro MX?</strong><br />É o registro DNS que indica para qual servidor de e-mail as mensagens de um domínio devem ser entregues. MX significa Mail eXchanger. Quando alguém envia um e-mail para um endereço do seu domínio, o servidor de envio consulta o MX para descobrir o servidor de destino. Sem um MX válido, o domínio não recebe e-mail.</p>
</p>
<p class="wp-block-paragraph"><strong>Como funciona a prioridade do MX?</strong><br />Cada registro MX tem um número de prioridade, e quanto menor o número, maior a prioridade. O servidor de envio tenta primeiro o MX de menor número; se ele não responder, passa para o próximo em ordem crescente. Isso permite ter um servidor principal (por exemplo, prioridade 10) e um de backup (prioridade 20) que só entra em ação se o principal cair.</p>
</p>
<p class="wp-block-paragraph"><strong>O que significa a prioridade 10 e 20 no MX?</strong><br />São a ordem de preferência entre servidores. O MX de prioridade 10 recebe os e-mails normalmente; o de prioridade 20 é um backup, usado só quando o de 10 está indisponível. Os números em si não têm valor absoluto: o que importa é qual é o menor. Poderiam ser 5 e 50 e o efeito seria o mesmo.</p>
</p>
<p class="wp-block-paragraph"><strong>O registro MX pode apontar para um CNAME?</strong><br />Não. O valor do MX deve ser um nome com registro A (ou AAAA), nunca um CNAME. A especificação do DNS não permite essa indireção no contexto do MX, e muitos servidores de e-mail rejeitam a configuração. O MX deve apontar para um nome como mail.seusite.com.br, que por sua vez tem um registro A com o IP do servidor.</p>
</p>
<p class="wp-block-paragraph"><strong>Como consultar o registro MX de um domínio?</strong><br />Use <code>nslookup -type=mx seusite.com.br</code> no Windows, Mac ou Linux, ou <code>dig seusite.com.br MX +short</code> no Mac e Linux. O comando devolve os servidores MX do domínio com suas prioridades. Se não retornar nada, o domínio não tem MX configurado e, portanto, não recebe e-mail.</p>
</p>
<p class="wp-block-paragraph"><strong>Como configurar o MX no Registro.br?</strong><br />Acesse o registro.br, faça login, selecione o domínio e vá em Editar zona DNS. Adicione uma entrada do tipo MX, deixando o nome em branco ou com @, informando o servidor de e-mail no valor e o número no campo de prioridade. Salve a zona. Importante: remova os MX antigos ao trocar de provedor, e confirme que o DNS do domínio é mesmo o do Registro.br, e não o da hospedagem.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que meu domínio não recebe e-mails?</strong><br />A causa mais comum é o registro MX ausente ou incorreto. Verifique com nslookup ou dig se existe um MX e se ele aponta para o servidor certo. Outras causas: MX apontando para um CNAME, MX antigo não removido após troca de provedor, ou a alteração feita no painel errado (Registro.br em vez da hospedagem, ou vice-versa). Lembre-se também da propagação de DNS após qualquer mudança.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual a diferença entre registro MX e registro A?</strong><br />O registro A liga um nome a um endereço IP. O registro MX diz para qual servidor entregar o e-mail do domínio — e esse MX aponta para um nome, que por sua vez tem um registro A com o IP. Ou seja, os dois trabalham juntos: o MX define o destino do e-mail, e o A resolve o endereço real desse destino.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é um registro MX?","acceptedAnswer":{"@type":"Answer","text":"É o registro DNS que indica para qual servidor de e-mail as mensagens de um domínio devem ser entregues. MX significa Mail eXchanger. Quando alguém envia um e-mail para um endereço do seu domínio, o servidor de envio consulta o MX para descobrir o servidor de destino. Sem um MX válido, o domínio não recebe e-mail."}},
    {"@type":"Question","name":"Como funciona a prioridade do MX?","acceptedAnswer":{"@type":"Answer","text":"Cada registro MX tem um número de prioridade, e quanto menor o número, maior a prioridade. O servidor de envio tenta primeiro o MX de menor número; se ele não responder, passa para o próximo em ordem crescente. Isso permite ter um servidor principal, por exemplo prioridade 10, e um de backup, prioridade 20, que só entra em ação se o principal cair."}},
    {"@type":"Question","name":"O que significa a prioridade 10 e 20 no MX?","acceptedAnswer":{"@type":"Answer","text":"São a ordem de preferência entre servidores. O MX de prioridade 10 recebe os e-mails normalmente; o de prioridade 20 é um backup, usado só quando o de 10 está indisponível. Os números em si não têm valor absoluto: o que importa é qual é o menor. Poderiam ser 5 e 50 e o efeito seria o mesmo."}},
    {"@type":"Question","name":"O registro MX pode apontar para um CNAME?","acceptedAnswer":{"@type":"Answer","text":"Não. O valor do MX deve ser um nome com registro A ou AAAA, nunca um CNAME. A especificação do DNS não permite essa indireção no contexto do MX, e muitos servidores de e-mail rejeitam a configuração. O MX deve apontar para um nome como mail.seusite.com.br, que por sua vez tem um registro A com o IP do servidor."}},
    {"@type":"Question","name":"Como consultar o registro MX de um domínio?","acceptedAnswer":{"@type":"Answer","text":"Use nslookup -type=mx seusite.com.br no Windows, Mac ou Linux, ou dig seusite.com.br MX +short no Mac e Linux. O comando devolve os servidores MX do domínio com suas prioridades. Se não retornar nada, o domínio não tem MX configurado e, portanto, não recebe e-mail."}},
    {"@type":"Question","name":"Como configurar o MX no Registro.br?","acceptedAnswer":{"@type":"Answer","text":"Acesse o registro.br, faça login, selecione o domínio e vá em Editar zona DNS. Adicione uma entrada do tipo MX, deixando o nome em branco ou com arroba, informando o servidor de e-mail no valor e o número no campo de prioridade. Salve a zona. Importante: remova os MX antigos ao trocar de provedor, e confirme que o DNS do domínio é mesmo o do Registro.br, e não o da hospedagem."}},
    {"@type":"Question","name":"Por que meu domínio não recebe e-mails?","acceptedAnswer":{"@type":"Answer","text":"A causa mais comum é o registro MX ausente ou incorreto. Verifique com nslookup ou dig se existe um MX e se ele aponta para o servidor certo. Outras causas: MX apontando para um CNAME, MX antigo não removido após troca de provedor, ou a alteração feita no painel errado. Lembre-se também da propagação de DNS após qualquer mudança."}},
    {"@type":"Question","name":"Qual a diferença entre registro MX e registro A?","acceptedAnswer":{"@type":"Answer","text":"O registro A liga um nome a um endereço IP. O registro MX diz para qual servidor entregar o e-mail do domínio, e esse MX aponta para um nome, que por sua vez tem um registro A com o IP. Ou seja, os dois trabalham juntos: o MX define o destino do e-mail, e o A resolve o endereço real desse destino."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">E-mail profissional com MX já configurado</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">No e-mail profissional da Homehost os registros MX já vêm prontos e apontando para o servidor certo, junto com SPF, DKIM, DMARC e DNS reverso. Você cria as contas e usa — sem editar zona DNS nem calcular prioridade.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-e-mails/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer o e-mail profissional<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">O registro MX é o endereço de entrega do e-mail do seu domínio: é ele que diz aos servidores do mundo inteiro para onde mandar as mensagens que chegam para você. Três coisas resumem o essencial: <strong>menor número de prioridade = servidor preferido</strong>, com os demais servindo de backup; <strong>o MX aponta para um nome com registro A, nunca para um CNAME</strong>; e ao configurar ou trocar de provedor, <strong>remova os MX antigos e edite no painel que realmente controla o DNS</strong> — Registro.br ou hospedagem, nunca os dois pela metade. Um <code>nslookup -type=mx</code> confirma em segundos se está tudo no lugar. E lembre-se de que o MX cuida do recebimento: para o e-mail também sair bem, ele anda de mãos dadas com SPF, DKIM, DMARC e o DNS reverso.</p>
</p>
<p class="wp-block-paragraph">
<p>O post <a href="https://www.homehost.com.br/blog/internet/registro-mx/" data-wpel-link="internal" target="_self">Registro MX (DNS MX): o que é, prioridade e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16864</post-id>	</item>
		<item>
		<title>DNS reverso e registro PTR: o que é e como configurar</title>
		<link>https://www.homehost.com.br/blog/internet/dns-reverso/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Sun, 19 Jul 2026 09:07:22 +0000</pubDate>
				<category><![CDATA[Internet]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16856</guid>

					<description><![CDATA[<p>DNS reverso é a consulta que descobre o nome de domínio a partir de um endereço IP — o caminho inverso do DNS comum. Enquanto o DNS normal parte de um nome (seusite.com.br) e chega a um IP, o DNS reverso parte de um IP e chega a um nome. Quem faz esse trabalho é [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/internet/dns-reverso/" data-wpel-link="internal" target="_self">DNS reverso e registro PTR: o que é e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>DNS reverso é a consulta que descobre o nome de domínio a partir de um endereço IP — o caminho inverso do DNS comum.</strong> Enquanto o DNS normal parte de um nome (<code>seusite.com.br</code>) e chega a um IP, o DNS reverso parte de um IP e chega a um nome. Quem faz esse trabalho é um tipo específico de registro: o <strong>PTR</strong>.</p>
</p>
<p class="wp-block-paragraph">Na navegação do dia a dia, você nunca percebe o DNS reverso. Mas há um lugar onde ele é decisivo: <strong>o e-mail</strong>. Servidores de e-mail do mundo inteiro checam o DNS reverso de quem envia antes de aceitar a mensagem — e um IP sem PTR configurado, ou com PTR errado, é uma das causas mais comuns de e-mail caindo direto no spam. Este guia explica o que é o DNS reverso, como funciona o registro PTR, por que ele é diferente de todos os outros registros, e como configurá-lo.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>DNS reverso</strong> converte um endereço IP de volta em um nome de domínio — o inverso do DNS comum. Ele usa o <strong>registro PTR</strong> (pointer), armazenado numa zona especial terminada em <code>.in-addr.arpa</code>. Detalhe que pega todo mundo: <strong>o PTR não é configurado no DNS do seu domínio, e sim por quem controla o bloco de IP</strong> — normalmente a hospedagem ou o provedor. Sua principal função é a <strong>entrega de e-mail</strong>: servidores checam se o IP de envio tem um PTR válido que &#8220;fecha o círculo&#8221; com o registro A, e recusam ou marcam como spam quem não tem.</p>
</div>
</p>
<p class="wp-block-paragraph"><div id="ez-toc-container" class="ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit">Conteúdo</p>
<span class="ez-toc-title-toggle"></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="https://www.homehost.com.br/blog/internet/dns-reverso/#O_que_e_DNS_reverso" title="O que é DNS reverso" data-wpel-link="internal" target="_self">O que é DNS reverso</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="https://www.homehost.com.br/blog/internet/dns-reverso/#O_registro_PTR" title="O registro PTR" data-wpel-link="internal" target="_self">O registro PTR</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="https://www.homehost.com.br/blog/internet/dns-reverso/#A_zona_in-addrarpa_o_IP_de_tras_para_frente" title="A zona in-addr.arpa: o IP de trás para frente" data-wpel-link="internal" target="_self">A zona in-addr.arpa: o IP de trás para frente</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="https://www.homehost.com.br/blog/internet/dns-reverso/#Por_que_o_PTR_e_diferente_de_todos_os_outros_registros" title="Por que o PTR é diferente de todos os outros registros" data-wpel-link="internal" target="_self">Por que o PTR é diferente de todos os outros registros</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="https://www.homehost.com.br/blog/internet/dns-reverso/#FCrDNS_o_teste_que_os_servidores_realmente_fazem" title="FCrDNS: o teste que os servidores realmente fazem" data-wpel-link="internal" target="_self">FCrDNS: o teste que os servidores realmente fazem</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="https://www.homehost.com.br/blog/internet/dns-reverso/#Por_que_isso_importa_tanto_para_e-mail" title="Por que isso importa tanto para e-mail" data-wpel-link="internal" target="_self">Por que isso importa tanto para e-mail</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="https://www.homehost.com.br/blog/internet/dns-reverso/#Como_consultar_o_DNS_reverso_de_um_IP" title="Como consultar o DNS reverso de um IP" data-wpel-link="internal" target="_self">Como consultar o DNS reverso de um IP</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="https://www.homehost.com.br/blog/internet/dns-reverso/#Como_configurar_o_DNS_reverso" title="Como configurar o DNS reverso" data-wpel-link="internal" target="_self">Como configurar o DNS reverso</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="https://www.homehost.com.br/blog/internet/dns-reverso/#Problemas_comuns_de_DNS_reverso" title="Problemas comuns de DNS reverso" data-wpel-link="internal" target="_self">Problemas comuns de DNS reverso</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="https://www.homehost.com.br/blog/internet/dns-reverso/#Perguntas_frequentes" title="Perguntas frequentes" data-wpel-link="internal" target="_self">Perguntas frequentes</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="https://www.homehost.com.br/blog/internet/dns-reverso/#Conclusao" title="Conclusão" data-wpel-link="internal" target="_self">Conclusão</a></li></ul></nav></div>
</p>
</p>
<h2 class="wp-block-heading">O que é DNS reverso</h2>
</p>
<p class="wp-block-paragraph">O DNS que você conhece funciona numa direção: você digita <code>homehost.com.br</code> e ele devolve o <a href="https://www.homehost.com.br/blog/internet/o-que-e-endereco-ip/" data-wpel-link="internal" target="_self">endereço IP</a> do servidor. Isso é o <strong>DNS direto</strong> (<em>forward</em>), e é o registro A que faz esse trabalho.</p>
</p>
<p class="wp-block-paragraph">O <strong>DNS reverso</strong> (<em>rDNS</em>) faz o caminho contrário: parte de um <strong>endereço IP</strong> e descobre <strong>qual nome está associado a ele</strong>. Se o DNS direto responde &#8220;qual o IP deste nome?&#8221;, o reverso responde &#8220;qual o nome deste IP?&#8221;.</p>
</p>
<p class="wp-block-paragraph">Para entender por que isso é útil, pense em quem recebe uma conexão. Um servidor que recebe um e-mail vê apenas o <strong>IP</strong> de quem está enviando — um número, sem contexto. O DNS reverso é o que permite a ele perguntar: &#8220;este IP diz pertencer a quem?&#8221;. Se a resposta for coerente, a conexão ganha credibilidade; se não houver resposta, ela fica suspeita.</p>
</p>
<h2 class="wp-block-heading">O registro PTR</h2>
</p>
<p class="wp-block-paragraph">O DNS reverso é possível graças a um tipo de registro chamado <strong>PTR</strong> (<em>pointer record</em>, ou registro de ponteiro). Ele é o espelho do registro A:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:520px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Registro</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Pergunta que responde</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Direção</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>A</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Qual o IP de <code>seusite.com.br</code>?</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Nome → IP</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>PTR</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Qual o nome de <code>200.151.24.50</code>?</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">IP → Nome</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">O PTR guarda, para um determinado IP, o <strong>nome de domínio canônico</strong> daquele endereço. Quando um servidor faz uma consulta reversa, é o PTR que responde. Ele é a base de tudo que envolve DNS reverso — a ponto de &#8220;DNS reverso&#8221; e &#8220;registro PTR&#8221; serem, na prática, dois nomes para o mesmo assunto: o conceito e o registro que o implementa.</p>
</p>
<h2 class="wp-block-heading">A zona in-addr.arpa: o IP de trás para frente</h2>
</p>
<p class="wp-block-paragraph">Aqui está a parte mais curiosa do DNS reverso, e que revela como ele foi encaixado no sistema.</p>
</p>
<p class="wp-block-paragraph">O DNS foi construído para ler nomes da <strong>direita para a esquerda</strong>, do mais geral para o mais específico: em <code>blog.seusite.com.br</code>, o <code>.br</code> é a raiz, depois vem <code>com</code>, <code>seusite</code> e por fim <code>blog</code>. Os IPs funcionam ao contrário — em <code>200.151.24.50</code>, a parte mais geral (a rede) fica à <strong>esquerda</strong>.</p>
</p>
<p class="wp-block-paragraph">Para encaixar o IP nessa lógica de &#8220;geral primeiro&#8221;, o DNS reverso <strong>inverte o endereço</strong> e adiciona um sufixo especial:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">IP:            200.151.24.50<br />
Vira:          50.24.151.200.in-addr.arpa</code>
</div>
</p>
<p class="wp-block-paragraph">O IP aparece de trás para frente, seguido de <strong><code>.in-addr.arpa</code></strong> — um domínio reservado exclusivamente para o DNS reverso. É nessa &#8220;zona reversa&#8221; que os registros PTR vivem. Para IPv6, a lógica é a mesma, com o sufixo <strong><code>.ip6.arpa</code></strong>.</p>
</p>
<p class="wp-block-paragraph">Você raramente vai digitar isso à mão — as ferramentas montam o nome invertido sozinhas. Mas entender esse formato explica por que o DNS reverso parece tão diferente: ele não mora junto dos outros registros do seu domínio. Mora numa árvore própria, organizada por IP, não por nome.</p>
</p>
<h2 class="wp-block-heading">Por que o PTR é diferente de todos os outros registros</h2>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Você não configura o PTR no DNS do seu domínio</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">Este é o ponto que mais confunde. Registros como A, CNAME, MX e TXT ficam na zona do <strong>seu domínio</strong>, e você os edita no painel da hospedagem. O <strong>PTR não</strong>. Ele fica na zona reversa do <strong>bloco de IP</strong>, que pertence a quem é dono daquele IP — normalmente a sua <strong>hospedagem, o provedor de nuvem ou o seu ISP</strong>. Por isso você pode procurar a vida inteira no painel do seu domínio e nunca achar onde criar um PTR: ele simplesmente não está lá. Para configurá-lo, é preciso pedir a quem controla o IP.</p>
</div>
</p>
<p class="wp-block-paragraph">A lógica por trás disso é justa: quem prova ser o dono de um IP é quem o administra, não quem só aponta um nome para ele. Qualquer pessoa pode criar um registro A dizendo que o seu domínio aponta para o IP <code><a href="https://www.homehost.com.br/blog/internet/dns-do-google/" data-wpel-link="internal" target="_self">8.8.8.8</a></code> — mas isso não lhe dá controle nenhum sobre o <code>8.8.8.8</code>. O PTR, por morar do lado do IP, só pode ser definido por quem realmente o controla. É isso que dá valor a ele como sinal de confiança.</p>
</p>
<p class="wp-block-paragraph">Na prática:</p>
</p>
<ul class="wp-block-list">
<li>Em <strong>hospedagem compartilhada</strong>, o PTR já vem configurado pelo provedor, apontando para um nome dele. Você normalmente não precisa (nem pode) mexer.</li>
</p>
<li>Em <strong>VPS ou servidor dedicado</strong>, você geralmente pode <strong>solicitar um PTR personalizado</strong> ao provedor, apontando o IP para o hostname do seu servidor de e-mail.</li>
</p>
<li>No seu <strong>DNS</strong>, o que você configura é o registro <strong>A</strong> correspondente — porque o PTR só tem valor se &#8220;fechar o círculo&#8221; com ele, como veremos a seguir.</li>
</ul>
</p>
<h2 class="wp-block-heading">FCrDNS: o teste que os servidores realmente fazem</h2>
</p>
<p class="wp-block-paragraph">Ter um PTR configurado não basta. O que os servidores de e-mail de verdade verificam é algo mais rígido, chamado <strong>FCrDNS</strong> (<em>Forward-Confirmed reverse DNS</em>), ou DNS reverso com confirmação direta — também conhecido como &#8220;círculo completo&#8221;.</p>
</p>
<p class="wp-block-paragraph">O motivo de existir é uma brecha. Como o PTR é definido por quem controla o IP, um spammer que aluga um IP poderia apontar o PTR dele para <code>mail.google.com</code> e tentar herdar a reputação do Google. O FCrDNS fecha essa brecha exigindo que os dois lados <strong>concordem entre si</strong>:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">1. IP do remetente  ->  PTR  ->  mail.seusite.com.br<br />
2. mail.seusite.com.br  ->  registro A  ->  IP do remetente</p>
<p>Se o passo 2 devolve o MESMO IP do passo 1, o círculo fechou. ✓</code>
</div>
</p>
<p class="wp-block-paragraph">Ou seja: o PTR aponta o IP para um nome, e o registro A <strong>daquele nome</strong> precisa apontar de volta para o <strong>mesmo IP</strong>. Se as duas pontas batem, o servidor tem uma garantia razoável de que quem envia é quem diz ser. Se não batem — ou se falta uma das pontas — a mensagem perde credibilidade.</p>
</p>
<p class="wp-block-paragraph">É por isso que configurar DNS reverso é sempre um trabalho de <strong>dois lados</strong>: pedir o PTR a quem controla o IP, e criar o registro A correspondente no seu domínio. Um sem o outro não fecha o círculo.</p>
</p>
<h2 class="wp-block-heading">Por que isso importa tanto para e-mail</h2>
</p>
<p class="wp-block-paragraph">O DNS reverso é, acima de tudo, uma ferramenta anti-spam. E a razão é histórica: máquinas domésticas infectadas, usadas por botnets para disparar spam, quase nunca têm PTR configurado — porque o dono do IP (o provedor de internet residencial) não configura reverso para cada cliente. Servidores de e-mail legítimos, ao contrário, têm.</p>
</p>
<p class="wp-block-paragraph">Isso transformou o PTR num filtro de primeira linha:</p>
</p>
<ul class="wp-block-list">
<li>Um <strong>IP sem PTR</strong> é tratado com forte desconfiança — muitos servidores recusam a conexão de cara.</li>
</p>
<li>Um <strong>PTR genérico</strong> (do tipo <code>ip-200-151-24-50.provedor.net</code>, atribuído automaticamente) é melhor que nada, mas fraco: não identifica o seu domínio.</li>
</p>
<li>Um <strong>PTR próprio, com FCrDNS fechado</strong>, é o que os grandes provedores esperam de quem envia e-mail a sério.</li>
</ul>
</p>
<p class="wp-block-paragraph">O DNS reverso não substitui o <a href="https://www.homehost.com.br/blog/contas-de-email/spf-dkim-dmarc/" data-wpel-link="internal" target="_self">SPF, DKIM e DMARC</a> — ele os <strong>complementa</strong>. Enquanto esses três autenticam o domínio e o conteúdo da mensagem, o PTR valida o <strong>IP de envio</strong>. Juntos, formam a base da entregabilidade: um domínio que quer chegar à caixa de entrada precisa dos quatro alinhados. Se os seus e-mails vão para o spam mesmo com SPF e DKIM corretos, o DNS reverso do IP de envio é um dos primeiros lugares a investigar.</p>
</p>
<h2 class="wp-block-heading">Como consultar o DNS reverso de um IP</h2>
</p>
<p class="wp-block-paragraph">Você pode verificar o PTR de qualquer IP com o comando <a href="https://www.homehost.com.br/blog/internet/nslookup/" data-wpel-link="internal" target="_self">nslookup</a> ou dig:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">Windows / Mac / Linux:   nslookup 200.151.24.50</p>
<p>Mac / Linux (mais direto):   dig -x 200.151.24.50 +short</code>
</div>
</p>
<p class="wp-block-paragraph">O <code><strong>dig -x</strong></code> já cuida de inverter o IP e consultar a zona<strong> <code>.in-addr.arpa</code></strong> para você. Se houver um PTR, o comando devolve o hostname; se não houver, a resposta vem vazia (ou como <code><a href="https://www.homehost.com.br/blog/dominio/dns_probe_finished_nxdomain-o-que-e-e-como-resolver/" data-wpel-link="internal" target="_self">NXDOMAIN</a></code>).</p>
</p>
<p class="wp-block-paragraph">Para conferir o <strong>FCrDNS</strong> — o círculo completo — faça as duas pontas: consulte o PTR do IP e depois o registro A do nome que ele devolveu. Se o A voltar ao IP original, está tudo certo. A ferramenta <a href="https://www.homehost.com.br/blog/internet/meu-ip/" data-wpel-link="internal" target="_self">Qual é meu IP</a> mostra o hostname reverso do seu IP atual, um jeito rápido de ver isso.</p>
</p>
<h3 class="wp-block-heading">Como configurar o DNS reverso</h3>
</p>
<p class="wp-block-paragraph">O processo tem sempre duas etapas, nesta ordem:</p>
</p>
<ol class="wp-block-list">
<li><strong>Crie o registro A</strong> no DNS do seu domínio, apontando o hostname do servidor (por exemplo, <code>mail.seusite.com.br</code>) para o IP dele. Essa ponta você controla.</li>
</p>
<li><strong>Solicite o PTR</strong> a quem controla o IP — a sua hospedagem, o provedor de VPS ou o provedor de nuvem. Informe o IP e o hostname que ele deve apontar (o mesmo do registro A). Em muitos painéis de VPS, há um campo de &#8220;DNS reverso&#8221; ou &#8220;rDNS&#8221;; em outros, é preciso abrir um chamado.</li>
</ol>
</p>
<p class="wp-block-paragraph">Feitas as duas, aguarde a <a href="https://www.homehost.com.br/blog/perguntas-frequentes/o-que-e-propagacao-de-dns/" data-wpel-link="internal" target="_self">propagação de DNS</a> e confirme com o <code>dig -x</code>. Uma observação importante: o PTR <strong>deve apontar para um nome que existe e resolve de volta ao IP</strong> — apontar para um hostname sem registro A quebra o FCrDNS e é um erro comum.</p>
</p>
<h2 class="wp-block-heading">Problemas comuns de DNS reverso</h2>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:600px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Sintoma</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Causa provável</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que fazer</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Não acho onde criar o PTR no painel</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">PTR não fica no DNS do domínio</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Solicite a quem controla o IP (hospedagem/VPS)</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">E-mails caindo no spam</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">IP sem PTR ou com PTR genérico</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Configure um PTR próprio com FCrDNS fechado</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">&#8220;Reverse DNS does not match&#8221;</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">PTR aponta para nome sem registro A de volta</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Alinhe o A e o PTR para o mesmo IP</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><code>dig -x</code> não devolve nada</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Não há PTR configurado para o IP</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Peça a criação ao dono do bloco de IP</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">PTR criado, mas ainda falha</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Propagação ainda não concluída</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Zonas reversas podem demorar mais; aguarde</td>
</tr>
</tbody>
</table>
</div>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é DNS reverso?</strong><br />É a consulta que descobre o nome de domínio associado a um endereço IP, o caminho inverso do DNS comum. Enquanto o DNS direto parte de um nome e chega a um IP (pelo registro A), o DNS reverso parte de um IP e chega a um nome, usando o registro PTR. Sua aplicação mais importante é na verificação de servidores de e-mail.</p>
</p>
<p class="wp-block-paragraph"><strong>O que é um registro PTR?</strong><br />PTR (pointer) é o tipo de registro DNS que faz o DNS reverso funcionar: ele associa um endereço IP a um nome de domínio. É o espelho do registro A, que faz o contrário. O PTR fica numa zona especial terminada em .in-addr.arpa (para IPv4) ou .ip6.arpa (para IPv6), organizada por IP em vez de por nome.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que não consigo criar o PTR no painel do meu domínio?</strong><br />Porque o PTR não fica na zona do seu domínio, e sim na zona reversa do bloco de IP, que pertence a quem controla aquele IP — normalmente a sua hospedagem, o provedor de VPS ou o ISP. Para criar ou alterar um PTR, é preciso solicitar a eles, e não editar no DNS do domínio. É a diferença fundamental do PTR para os registros A, CNAME, MX e TXT.</p>
</p>
<p class="wp-block-paragraph"><strong>Para que serve o DNS reverso?</strong><br />Sua função principal é a entrega de e-mail. Servidores de destino consultam o DNS reverso do IP de quem envia para verificar se ele é legítimo: um IP sem PTR, ou com PTR que não confere, é tratado como suspeito e a mensagem costuma ir para o spam ou ser recusada. Também é usado em diagnóstico de rede e em logs, para mostrar nomes em vez de números.</p>
</p>
<p class="wp-block-paragraph"><strong>O que é FCrDNS?</strong><br />FCrDNS (Forward-Confirmed reverse DNS) é a verificação completa que os servidores de e-mail realmente fazem. Não basta ter um PTR: o nome que o PTR devolve precisa ter um registro A que aponte de volta ao mesmo IP. Se as duas pontas batem, o círculo se fecha e o IP ganha credibilidade. É o que impede um spammer de apontar o PTR para um nome que não é dele.</p>
</p>
<p class="wp-block-paragraph"><strong>DNS reverso substitui SPF, DKIM e DMARC?</strong><br />Não. Eles são complementares. O SPF, DKIM e DMARC autenticam o domínio e o conteúdo da mensagem; o DNS reverso valida o IP de envio. Um bom setup de entregabilidade tem os quatro configurados e alinhados. Se os e-mails vão para o spam mesmo com SPF e DKIM corretos, o DNS reverso do IP de envio é um dos primeiros pontos a checar.</p>
</p>
<p class="wp-block-paragraph"><strong>Como consultar o DNS reverso de um IP?</strong><br />Use <code>nslookup 200.151.24.50</code> no Windows, Mac ou Linux, ou <code>dig -x 200.151.24.50 +short</code> no Mac e Linux, que já inverte o IP e consulta a zona reversa. Se houver um PTR, o comando devolve o hostname; se não houver, a resposta vem vazia. Para checar o FCrDNS, consulte também o registro A do nome devolvido e veja se ele volta ao IP original.</p>
</p>
<p class="wp-block-paragraph"><strong>Todo site precisa de DNS reverso?</strong><br />Não necessariamente. Um site comum, que só serve páginas, funciona sem PTR. Ele se torna importante quando o servidor envia e-mail: aí o DNS reverso do IP de envio passa a ser decisivo para a entrega. Em hospedagem compartilhada, o provedor já cuida disso; em VPS ou servidor dedicado que envia e-mail, vale configurar um PTR próprio.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é DNS reverso?","acceptedAnswer":{"@type":"Answer","text":"É a consulta que descobre o nome de domínio associado a um endereço IP, o caminho inverso do DNS comum. Enquanto o DNS direto parte de um nome e chega a um IP pelo registro A, o DNS reverso parte de um IP e chega a um nome usando o registro PTR. Sua aplicação mais importante é na verificação de servidores de e-mail."}},
    {"@type":"Question","name":"O que é um registro PTR?","acceptedAnswer":{"@type":"Answer","text":"PTR (pointer) é o tipo de registro DNS que faz o DNS reverso funcionar: ele associa um endereço IP a um nome de domínio. É o espelho do registro A, que faz o contrário. O PTR fica numa zona especial terminada em .in-addr.arpa para IPv4 ou .ip6.arpa para IPv6, organizada por IP em vez de por nome."}},
    {"@type":"Question","name":"Por que não consigo criar o PTR no painel do meu domínio?","acceptedAnswer":{"@type":"Answer","text":"Porque o PTR não fica na zona do seu domínio, e sim na zona reversa do bloco de IP, que pertence a quem controla aquele IP: normalmente a sua hospedagem, o provedor de VPS ou o ISP. Para criar ou alterar um PTR, é preciso solicitar a eles, e não editar no DNS do domínio. É a diferença fundamental do PTR para os registros A, CNAME, MX e TXT."}},
    {"@type":"Question","name":"Para que serve o DNS reverso?","acceptedAnswer":{"@type":"Answer","text":"Sua função principal é a entrega de e-mail. Servidores de destino consultam o DNS reverso do IP de quem envia para verificar se ele é legítimo: um IP sem PTR, ou com PTR que não confere, é tratado como suspeito e a mensagem costuma ir para o spam ou ser recusada. Também é usado em diagnóstico de rede e em logs, para mostrar nomes em vez de números."}},
    {"@type":"Question","name":"O que é FCrDNS?","acceptedAnswer":{"@type":"Answer","text":"FCrDNS (Forward-Confirmed reverse DNS) é a verificação completa que os servidores de e-mail realmente fazem. Não basta ter um PTR: o nome que o PTR devolve precisa ter um registro A que aponte de volta ao mesmo IP. Se as duas pontas batem, o círculo se fecha e o IP ganha credibilidade. É o que impede um spammer de apontar o PTR para um nome que não é dele."}},
    {"@type":"Question","name":"DNS reverso substitui SPF, DKIM e DMARC?","acceptedAnswer":{"@type":"Answer","text":"Não. Eles são complementares. O SPF, DKIM e DMARC autenticam o domínio e o conteúdo da mensagem; o DNS reverso valida o IP de envio. Um bom setup de entregabilidade tem os quatro configurados e alinhados. Se os e-mails vão para o spam mesmo com SPF e DKIM corretos, o DNS reverso do IP de envio é um dos primeiros pontos a checar."}},
    {"@type":"Question","name":"Como consultar o DNS reverso de um IP?","acceptedAnswer":{"@type":"Answer","text":"Use nslookup 200.151.24.50 no Windows, Mac ou Linux, ou dig -x 200.151.24.50 +short no Mac e Linux, que já inverte o IP e consulta a zona reversa. Se houver um PTR, o comando devolve o hostname; se não houver, a resposta vem vazia. Para checar o FCrDNS, consulte também o registro A do nome devolvido e veja se ele volta ao IP original."}},
    {"@type":"Question","name":"Todo site precisa de DNS reverso?","acceptedAnswer":{"@type":"Answer","text":"Não necessariamente. Um site comum, que só serve páginas, funciona sem PTR. Ele se torna importante quando o servidor envia e-mail: aí o DNS reverso do IP de envio passa a ser decisivo para a entrega. Em hospedagem compartilhada, o provedor já cuida disso; em VPS ou servidor dedicado que envia e-mail, vale configurar um PTR próprio."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">E-mail que chega na caixa de entrada</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">No e-mail profissional da Homehost o DNS reverso já vem configurado, junto com SPF, DKIM e DMARC — os quatro pilares da entregabilidade prontos, para as suas mensagens não caírem no spam por um PTR faltando.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-e-mails/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer o e-mail profissional<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">O DNS reverso é o caminho de volta do DNS: do IP para o nome, feito pelo registro PTR e guardado na zona <code>.in-addr.arpa</code>. Três coisas resumem o que importa: <strong>o PTR não fica no DNS do seu domínio</strong> — ele é controlado por quem dona o bloco de IP, então se configura pedindo à hospedagem ou ao provedor; <strong>o que os servidores checam é o FCrDNS</strong>, o círculo completo em que o PTR e o registro A concordam sobre o mesmo IP; e <strong>a razão de tudo isso é o e-mail</strong> — o DNS reverso é o quarto pilar da entregabilidade, ao lado de SPF, DKIM e DMARC. Um site comum vive sem ele; um servidor que manda e-mail, não.</p></p>
<p>O post <a href="https://www.homehost.com.br/blog/internet/dns-reverso/" data-wpel-link="internal" target="_self">DNS reverso e registro PTR: o que é e como configurar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16856</post-id>	</item>
		<item>
		<title>Registro CNAME: o que é, como funciona e quando usar</title>
		<link>https://www.homehost.com.br/blog/internet/registro-cname/</link>
		
		<dc:creator><![CDATA[Gustavo Gallas]]></dc:creator>
		<pubDate>Sun, 19 Jul 2026 08:49:05 +0000</pubDate>
				<category><![CDATA[Internet]]></category>
		<guid isPermaLink="false">https://www.homehost.com.br/blog/?p=16843</guid>

					<description><![CDATA[<p>Um registro CNAME é um apelido no DNS: ele aponta um nome de domínio para outro, em vez de apontar para um endereço IP. Quando você configura www.seusite.com.br para seguir seusite.com.br, é um CNAME que faz isso — o apelido www herda o destino do nome principal. É um dos registros DNS mais usados e, [&#8230;]</p>
<p>O post <a href="https://www.homehost.com.br/blog/internet/registro-cname/" data-wpel-link="internal" target="_self">Registro CNAME: o que é, como funciona e quando usar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></description>
										<content:encoded><![CDATA[</p>
<p class="wp-block-paragraph"><strong>Um registro CNAME é um apelido no DNS: ele aponta um nome de domínio para outro, em vez de apontar para um <a href="https://www.homehost.com.br/blog/internet/o-que-e-endereco-ip/" data-wpel-link="internal" target="_self">endereço IP</a>.</strong> Quando você configura <code>www.seusite.com.br</code> para seguir <code>seusite.com.br</code>, é um CNAME que faz isso — o apelido <code>www</code> herda o destino do nome principal.</p>
</p>
<p class="wp-block-paragraph">É um dos registros DNS mais usados e, ao mesmo tempo, um dos que mais gera erro de configuração — quase sempre pela mesma razão: o CNAME tem uma regra rígida que quase ninguém conhece, e ela é o motivo pelo qual &#8220;não dá para usar CNAME na raiz do domínio&#8221;. Este guia explica o que é o CNAME, como ele funciona, quando usar (e quando não), e como resolver o problema da raiz.</p>
</p>
<div style="border:1px solid #d6e4fb; border-left:4px solid #1a73e8; background:#f4f8fe; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#0b3d91; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;">Resposta rápida</div>
<p style="color:#0b3d91; line-height:1.65; margin:0;">O <strong>registro CNAME</strong> (Canonical Name) aponta um nome de domínio para <strong>outro nome</strong>, e não para um IP — funciona como um apelido. Um CNAME em <code>www.seusite.com.br</code> apontando para <code>seusite.com.br</code> faz o <code>www</code> seguir sempre o destino do domínio principal. Regra de ouro: <strong>um nome com CNAME não pode ter nenhum outro registro</strong> — é por isso que não se usa CNAME na raiz do domínio (que precisa de MX e outros). Para a raiz, use um registro A ou a solução ALIAS/ANAME do seu provedor de DNS.</p>
</div>
</p>
<h2 class="wp-block-heading">O que é um registro CNAME</h2>
</p>
<p class="wp-block-paragraph">O DNS funciona como uma agenda de contatos da internet: ele traduz nomes que humanos entendem em endereços que máquinas usam. O registro mais básico dessa agenda é o <strong>registro A</strong>, que liga um nome diretamente a um endereço IP — <code>seusite.com.br</code> → <code>200.151.24.50</code>.</p>
</p>
<p class="wp-block-paragraph">O <strong>CNAME</strong> (<em>Canonical Name</em>, ou nome canônico) faz algo diferente: em vez de apontar para um IP, ele aponta para <strong>outro nome</strong>. É um apelido. Quando alguém procura o apelido, o DNS responde &#8220;na verdade, o nome de verdade é este outro&#8221; e refaz a busca a partir dali.</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">Nome                TIPO    Valor<br />
------------------------------------------------<br />
www.seusite.com.br  CNAME   seusite.com.br<br />
seusite.com.br      A       200.151.24.50</code>
</div>
</p>
<p class="wp-block-paragraph">Nesse exemplo, quem acessa <code>www.seusite.com.br</code> recebe do DNS a instrução de olhar para <code>seusite.com.br</code>, que tem um registro A apontando para o IP. O resultado final é o mesmo endereço — mas por um caminho de duas etapas. Se quiser entender a agenda inteira, o <a href="https://www.homehost.com.br/blog/internet/o-que-e-servidor-dns/" data-wpel-link="internal" target="_self">servidor DNS</a> é o guia do sistema como um todo.</p>
</p>
<h2 class="wp-block-heading">Para que serve o CNAME</h2>
</p>
<p class="wp-block-paragraph">A vantagem do CNAME aparece na <strong>manutenção</strong>. Imagine um servidor com vários nomes apontando para ele: <code>www</code>, <code>loja</code>, <code>blog</code>, <code>app</code>. Há duas formas de configurar isso.</p>
</p>
<p class="wp-block-paragraph">Com <strong>registros A</strong>, cada nome guarda o IP diretamente. Se o servidor muda de IP, você precisa editar todos os registros, um a um — e esquecer de um significa um subdomínio quebrado.</p>
</p>
<p class="wp-block-paragraph">Com <strong>CNAME</strong>, cada nome aponta para o domínio principal, e só o principal guarda o IP num registro A. Muda o IP? Você edita <strong>um único registro</strong>, e todos os apelidos acompanham automaticamente. É a diferença entre atualizar uma agenda inteira e atualizar um contato só.</p>
</p>
<p class="wp-block-paragraph">Por isso o CNAME é o registro natural para:</p>
</p>
<ul class="wp-block-list">
<li><strong>O <code>www</code></strong> apontando para o domínio raiz (o uso mais comum de todos).</li>
</p>
<li><strong>Serviços de terceiros:</strong> apontar <code>loja.seusite.com.br</code> para o endereço de uma plataforma de e-commerce, ou <code>status.seusite.com.br</code> para uma ferramenta externa.</li>
</p>
<li><strong>Validação de domínio:</strong> Google, Microsoft e provedores de certificado costumam pedir um CNAME para provar que o domínio é seu.</li>
</p>
<li><strong>CDN e cloud:</strong> o endereço de uma CDN muda de IP o tempo todo; um CNAME apontando para o nome dela absorve essas mudanças sem você fazer nada.</li>
</ul>
</p>
<h2 class="wp-block-heading">A regra de ouro do CNAME</h2>
</p>
<div style="border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;">
<div style="font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> A regra que explica quase todos os erros de CNAME</div>
<p style="color:#8a6d00; line-height:1.65; margin:0;">Um nome que tem um registro CNAME <strong>não pode ter nenhum outro registro</strong>. Nada de A, MX, TXT ou outro CNAME no mesmo nome — só o CNAME, sozinho. A razão é lógica: o CNAME diz &#8220;para tudo deste nome, consulte aquele outro&#8221;. Se houvesse um MX ao lado, o DNS não saberia se o e-mail segue o apelido ou o registro local. Para evitar essa ambiguidade, a especificação simplesmente proíbe a convivência.</p>
</div>
</p>
<p class="wp-block-paragraph">Essa única regra é a origem da maioria dos problemas com CNAME. E ela leva direto ao erro mais comum de todos.</p>
</p>
<h2 class="wp-block-heading">Por que não se usa CNAME na raiz do domínio</h2>
</p>
<p class="wp-block-paragraph">A <strong>raiz do domínio</strong> (também chamada de <em>apex</em>, <em>zone apex</em> ou <em>naked domain</em>) é o nome sem nada na frente: <code>seusite.com.br</code>, e não <code>www.seusite.com.br</code>.</p>
</p>
<p class="wp-block-paragraph">A raiz <strong>obrigatoriamente</strong> tem outros registros. Ela precisa de um <a href="https://www.homehost.com.br/blog/internet/registro-mx/" data-wpel-link="internal" target="_self">registro <strong>MX</strong></a> para receber e-mail, e quase sempre de registros <strong>NS</strong> e outros. Pela regra de ouro, se a raiz tivesse um CNAME, ela não poderia ter mais nada — o que quebraria o e-mail e o próprio funcionamento da zona.</p>
</p>
<p class="wp-block-paragraph">Por isso a especificação do DNS <strong>não permite CNAME na raiz</strong>. E é aqui que muita gente trava: quer que <code>seusite.com.br</code> (sem o <code>www</code>) aponte para uma CDN ou um serviço externo que só fornece um nome, não um IP fixo. Com CNAME proibido na raiz, parece um beco sem saída.</p>
</p>
<p class="wp-block-paragraph">A saída tem dois caminhos:</p>
</p>
<ol class="wp-block-list">
<li><strong>Registro A com o IP do serviço</strong> — funciona, mas só se o serviço tiver um IP fixo. Muitas CDNs não têm.</li>
</p>
<li><strong>ALIAS, ANAME ou CNAME flattening</strong> — registros especiais que <strong>imitam</strong> um CNAME na raiz, mas se comportam como um A. O provedor de DNS resolve o nome de destino nos bastidores e devolve o IP já pronto, contornando a proibição. Não fazem parte do padrão original do DNS; são uma extensão que cada provedor implementa com um nome próprio.</li>
</ol>
</p>
<p class="wp-block-paragraph">Se o seu provedor oferece ALIAS ou ANAME, é isso que você usa para apontar a raiz a um serviço externo. Se não oferece, a alternativa é manter a raiz num registro A e redirecionar tudo para o <code>www</code> (que pode ser CNAME à vontade).</p>
</p>
<p class="wp-block-paragraph">Ao contrário do <a href="https://www.homehost.com.br/blog/internet/registro-txt/" data-wpel-link="internal" target="_self">registro TXT</a>, do qual vários podem coexistir no mesmo nome, o CNAME precisa ficar sozinho.</p>
</p>
<h2 class="wp-block-heading">CNAME record: por que o nome parece &#8220;invertido&#8221;</h2>
</p>
<p class="wp-block-paragraph">Existe uma confusão sutil e muito difundida sobre qual lado é, de fato, o &#8220;CNAME&#8221; — e vale esclarecer, porque é comum até entre quem já mexe em DNS.</p>
</p>
<p class="wp-block-paragraph">Veja de novo a linha:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">www.seusite.com.br    CNAME    seusite.com.br</code>
</div>
</p>
<p class="wp-block-paragraph">No dia a dia, as pessoas chamam o lado esquerdo (<code>www.seusite.com.br</code>) de &#8220;o CNAME&#8221;. Mas, tecnicamente, isso está trocado. <strong>CNAME significa <em>Canonical Name</em> — nome canônico — e o nome canônico é o destino, à direita.</strong> O lado esquerdo é o <em>apelido</em>; o lado direito é o nome verdadeiro, o canônico, que dá nome ao registro.</p>
</p>
<p class="wp-block-paragraph">Na prática, a troca não atrapalha a configuração — todo painel de DNS entende o que você quer. Mas saber disso ajuda a ler a documentação técnica sem se perder: quando um texto diz &#8220;o CNAME aponta para tal lugar&#8221;, ele está falando do valor à direita.</p>
</p>
<h2 class="wp-block-heading">CNAME vs registro A: qual usar</h2>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:560px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Aspecto</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Registro A</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Registro CNAME</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Aponta para</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um endereço IP</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Outro nome de domínio</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Na raiz do domínio</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Sim</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Não é permitido</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Convive com outros registros</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Sim</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Não — fica sozinho</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Se o IP de destino muda</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Precisa editar o registro</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Acompanha sozinho</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Ideal para</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">A raiz e IPs fixos</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Subdomínios e serviços externos</td>
</tr>
</tbody>
</table>
</div>
</p>
<p class="wp-block-paragraph">A regra prática: <strong>a raiz e endereços de IP fixo pedem registro A; subdomínios que seguem outro nome pedem CNAME.</strong> O <code>www</code> é o caso clássico de CNAME; o <code>seusite.com.br</code> puro é o caso clássico de A.</p>
</p>
<h2 class="wp-block-heading">O custo escondido: cadeias de CNAME</h2>
</p>
<p class="wp-block-paragraph">Um CNAME pode apontar para um nome que, por sua vez, é outro CNAME, que aponta para mais um — formando uma <strong>cadeia</strong>. O DNS segue cada elo até chegar num registro A e obter o IP.</p>
</p>
<p class="wp-block-paragraph">Funciona, mas cobra um preço. Cada elo da cadeia é <strong>uma consulta DNS a mais</strong> antes de o navegador saber para onde ir — e essas consultas acontecem em série, uma esperando a outra. Uma cadeia longa adiciona latência perceptível ao primeiro acesso, antes mesmo de o site começar a carregar.</p>
</p>
<p class="wp-block-paragraph">Por isso a recomendação é manter as cadeias curtas: um CNAME apontando direto para o nome que tem o registro A é o ideal. Se você encontrar um subdomínio lento e desconfiar do DNS, vale investigar quantos saltos ele faz — o problema pode estar numa cadeia que cresceu sem ninguém perceber. Ferramentas de diagnóstico como as descritas em <a href="https://www.homehost.com.br/blog/dominio/como-resolver-problema-de-dns/" data-wpel-link="internal" target="_self">problemas de DNS</a> ajudam a rastrear isso.</p>
</p>
<h2 class="wp-block-heading">Como criar um registro CNAME</h2>
</p>
<p class="wp-block-paragraph">O caminho geral é parecido em qualquer provedor:</p>
</p>
<ol class="wp-block-list">
<li>Acesse a <strong>zona DNS</strong> do seu domínio, no painel de hospedagem ou no registrador.</li>
</p>
<li>Crie um novo registro do tipo <strong>CNAME</strong>.</li>
</p>
<li>No campo <strong>Nome</strong> (ou <em>Host</em>), coloque só o apelido — normalmente o subdomínio, como <code>www</code> ou <code>loja</code>. Não repita o domínio inteiro; o painel completa sozinho.</li>
</p>
<li>No campo <strong>Valor</strong> (ou <em>Destino</em>, <em>Aponta para</em>), coloque o nome canônico completo, terminando em ponto quando o painel exigir: <code>seusite.com.br.</code></li>
</p>
<li>Defina o <strong>TTL</strong> (tempo de cache) e salve.</li>
</ol>
</p>
<p class="wp-block-paragraph">Depois de salvar, a mudança não é instantânea: ela depende da <strong><a href="https://www.homehost.com.br/blog/perguntas-frequentes/o-que-e-propagacao-de-dns/" data-wpel-link="internal" target="_self">propagação de DNS</a></strong>, que pode levar de minutos a algumas horas conforme o TTL anterior. Para conferir se o CNAME já está valendo, um comando resolve:</p>
</p>
<div style="background:#0b3d91; border-radius:8px; padding:16px 18px; margin:18px 0; font-family:'Courier New', Courier, monospace; overflow-x:auto;">
  <code style="color:#f1f5f9; font-size:13.5px; line-height:1.7; white-space:pre;">Windows / Mac / Linux:   nslookup -type=cname www.seusite.com.br</p>
<p>Mac / Linux (mais completo):   dig www.seusite.com.br CNAME +short</code>
</div>
</p>
<p class="wp-block-paragraph">Se o comando <a href="https://www.homehost.com.br/blog/internet/nslookup/" data-wpel-link="internal" target="_self">nslookup</a> devolver o nome canônico, o registro está ativo e propagado ao menos naquele servidor DNS.</p>
</p>
<h2 class="wp-block-heading">Problemas comuns com CNAME</h2>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:600px;">
<thead>
<tr style="background-color:#1a73e8; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #1a73e8;">Sintoma</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">Causa provável</th>
<th style="padding:12px 14px; border:1px solid #1a73e8;">O que fazer</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Painel recusa o CNAME na raiz</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">CNAME não é permitido no apex</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Use registro A, ou ALIAS/ANAME se houver</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">E-mail parou depois de criar um CNAME</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">CNAME num nome que tinha MX</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Remova o CNAME — ele anula os outros registros</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Erro &#8220;conflito de registros&#8221;</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Já existe outro registro no mesmo nome</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um nome com CNAME não aceita mais nada</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Subdomínio demora a responder</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Cadeia longa de CNAMEs</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Encurte a cadeia — aponte direto ao nome com A</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Mudança não aparece</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Propagação / cache do TTL antigo</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Aguarde o TTL e teste com dig/nslookup</td>
</tr>
</tbody>
</table>
</div>
</p>
<h2 class="wp-block-heading">Os principais registros DNS</h2>
</p>
<p class="wp-block-paragraph">O CNAME é um entre vários tipos de registro. Veja onde ele se encaixa:</p>
</p>
<div style="overflow-x:auto; margin:24px 0;">
<table style="width:100%; border-collapse:collapse; font-family:Arial, Helvetica, sans-serif; font-size:14.5px; min-width:560px;">
<thead>
<tr style="background-color:#0b3d91; color:#ffffff; text-align:left;">
<th style="padding:12px 14px; border:1px solid #0b3d91;">Registro</th>
<th style="padding:12px 14px; border:1px solid #0b3d91;">Aponta para</th>
<th style="padding:12px 14px; border:1px solid #0b3d91;">Para que serve</th>
</tr>
</thead>
<tbody>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>A</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um IPv4</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Liga um nome a um endereço</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>AAAA</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um IPv6</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">O mesmo que o A, para IPv6</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>CNAME</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Outro nome</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Cria um apelido para um nome canônico</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>MX</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um servidor de e-mail</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Diz para onde enviar o e-mail do domínio</td>
</tr>
<tr style="background-color:#f5f7fa;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>TXT</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Texto livre</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">SPF, DKIM, verificações de domínio</td>
</tr>
<tr style="background-color:#ffffff;">
<td style="padding:11px 14px; border:1px solid #e3e8ee;"><strong>NS</strong></td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Um servidor DNS</td>
<td style="padding:11px 14px; border:1px solid #e3e8ee;">Define quem responde pela zona</td>
</tr>
</tbody>
</table>
</div>
</p>
<h2 class="wp-block-heading">Perguntas frequentes</h2>
</p>
<p class="wp-block-paragraph"><strong>O que é um registro CNAME?</strong><br />É um tipo de registro DNS que aponta um nome de domínio para outro nome, em vez de apontar para um endereço IP. Funciona como um apelido: quando alguém consulta o nome com CNAME, o DNS responde qual é o nome canônico de verdade e refaz a busca a partir dele. O uso mais comum é fazer o www apontar para o domínio principal.</p>
</p>
<p class="wp-block-paragraph"><strong>Qual a diferença entre CNAME e registro A?</strong><br />O registro A aponta um nome diretamente para um endereço IP; o CNAME aponta um nome para outro nome. Na prática, o A é usado na raiz do domínio e em IPs fixos, enquanto o CNAME é ideal para subdomínios e para serviços externos cujo IP muda, porque ele acompanha o destino automaticamente sem você precisar editar o IP.</p>
</p>
<p class="wp-block-paragraph"><strong>Por que não posso usar CNAME na raiz do domínio?</strong><br />Porque um nome com CNAME não pode ter nenhum outro registro, e a raiz do domínio obrigatoriamente precisa de outros, como o MX para receber e-mail. Um CNAME na raiz quebraria isso. A solução é usar um registro A, ou os registros ALIAS, ANAME ou CNAME flattening, que imitam um CNAME na raiz mas se comportam como um A.</p>
</p>
<p class="wp-block-paragraph"><strong>Um nome com CNAME pode ter outros registros?</strong><br />Não. Essa é a regra fundamental do CNAME: o nome que tem um registro CNAME não pode ter A, MX, TXT nem qualquer outro registro junto. O CNAME precisa ficar sozinho, porque ele redireciona toda consulta daquele nome para o nome canônico, e a presença de outro registro criaria ambiguidade.</p>
</p>
<p class="wp-block-paragraph"><strong>O que significa CNAME?</strong><br />CNAME é a sigla de Canonical Name, ou nome canônico. O nome canônico é o destino do registro, o nome verdadeiro para o qual o apelido aponta. Por isso, tecnicamente, o &#8220;CNAME&#8221; é o valor à direita da configuração, e não o apelido à esquerda, embora no dia a dia muita gente chame o apelido de CNAME.</p>
</p>
<p class="wp-block-paragraph"><strong>Como testar se um CNAME está funcionando?</strong><br />Use o comando <strong><code>nslookup -type=cname www.seusite.com.br</code> </strong>no Windows, Mac ou Linux, ou <code>dig www.seusite.com.br CNAME +short</code> no Mac e Linux. Se o comando devolver o nome canônico de destino, o registro está ativo e propagado naquele servidor DNS. Se não devolver nada, pode ser que a propagação ainda não tenha concluído.</p>
</p>
<p class="wp-block-paragraph"><strong>Quanto tempo o CNAME demora para funcionar?</strong><br />Depende da propagação de DNS, que varia conforme o TTL configurado no registro anterior. Pode ser de alguns minutos a algumas horas. Enquanto a propagação não termina, alguns servidores DNS já mostram o novo destino e outros ainda mostram o antigo, o que é normal durante a transição.</p>
</p>
<p class="wp-block-paragraph"><strong>Posso apontar um CNAME para outro CNAME?</strong><br />Pode, formando uma cadeia de CNAMEs, e o DNS segue cada elo até chegar a um registro A. Porém, cada elo é uma consulta DNS a mais, feita em série, o que adiciona latência ao primeiro acesso. O recomendado é manter a cadeia curta, com o CNAME apontando direto para o nome que tem o registro A.</p>
</p>
<p>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"O que é um registro CNAME?","acceptedAnswer":{"@type":"Answer","text":"É um tipo de registro DNS que aponta um nome de domínio para outro nome, em vez de apontar para um endereço IP. Funciona como um apelido: quando alguém consulta o nome com CNAME, o DNS responde qual é o nome canônico de verdade e refaz a busca a partir dele. O uso mais comum é fazer o www apontar para o domínio principal."}},
    {"@type":"Question","name":"Qual a diferença entre CNAME e registro A?","acceptedAnswer":{"@type":"Answer","text":"O registro A aponta um nome diretamente para um endereço IP; o CNAME aponta um nome para outro nome. Na prática, o A é usado na raiz do domínio e em IPs fixos, enquanto o CNAME é ideal para subdomínios e para serviços externos cujo IP muda, porque ele acompanha o destino automaticamente sem você precisar editar o IP."}},
    {"@type":"Question","name":"Por que não posso usar CNAME na raiz do domínio?","acceptedAnswer":{"@type":"Answer","text":"Porque um nome com CNAME não pode ter nenhum outro registro, e a raiz do domínio obrigatoriamente precisa de outros, como o MX para receber e-mail. Um CNAME na raiz quebraria isso. A solução é usar um registro A, ou os registros ALIAS, ANAME ou CNAME flattening, que imitam um CNAME na raiz mas se comportam como um A."}},
    {"@type":"Question","name":"Um nome com CNAME pode ter outros registros?","acceptedAnswer":{"@type":"Answer","text":"Não. Essa é a regra fundamental do CNAME: o nome que tem um registro CNAME não pode ter A, MX, TXT nem qualquer outro registro junto. O CNAME precisa ficar sozinho, porque ele redireciona toda consulta daquele nome para o nome canônico, e a presença de outro registro criaria ambiguidade."}},
    {"@type":"Question","name":"O que significa CNAME?","acceptedAnswer":{"@type":"Answer","text":"CNAME é a sigla de Canonical Name, ou nome canônico. O nome canônico é o destino do registro, o nome verdadeiro para o qual o apelido aponta. Por isso, tecnicamente, o CNAME é o valor à direita da configuração, e não o apelido à esquerda, embora no dia a dia muita gente chame o apelido de CNAME."}},
    {"@type":"Question","name":"Como testar se um CNAME está funcionando?","acceptedAnswer":{"@type":"Answer","text":"Use o comando nslookup -type=cname www.seusite.com.br no Windows, Mac ou Linux, ou dig www.seusite.com.br CNAME +short no Mac e Linux. Se o comando devolver o nome canônico de destino, o registro está ativo e propagado naquele servidor DNS. Se não devolver nada, pode ser que a propagação ainda não tenha concluído."}},
    {"@type":"Question","name":"Quanto tempo o CNAME demora para funcionar?","acceptedAnswer":{"@type":"Answer","text":"Depende da propagação de DNS, que varia conforme o TTL configurado no registro anterior. Pode ser de alguns minutos a algumas horas. Enquanto a propagação não termina, alguns servidores DNS já mostram o novo destino e outros ainda mostram o antigo, o que é normal durante a transição."}},
    {"@type":"Question","name":"Posso apontar um CNAME para outro CNAME?","acceptedAnswer":{"@type":"Answer","text":"Pode, formando uma cadeia de CNAMEs, e o DNS segue cada elo até chegar a um registro A. Porém, cada elo é uma consulta DNS a mais, feita em série, o que adiciona latência ao primeiro acesso. O recomendado é manter a cadeia curta, com o CNAME apontando direto para o nome que tem o registro A."}}
  ]
}
</script>
</p>
</p>
<div style="max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);">
<div style="display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;">
<div style="flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);">
      <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg>
    </div>
<div style="flex:1 1 320px; min-width:260px;">
<div style="font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;">Gerencie seu DNS sem complicação</div>
<p style="margin:0 0 18px; line-height:1.6; color:#dbe8fb;">Na hospedagem da Homehost você edita registros CNAME, A, MX e TXT num painel simples, com o DNS já pré-configurado e suporte em português para quando bater a dúvida. Sem decorar regra de apex nem caçar campo escondido.</p>
<p>      <a href="https://www.homehost.com.br/hospedagem-de-sites/" style="display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);" data-wpel-link="external" target="_blank" rel="external noopener"><br />
        Conhecer a hospedagem Homehost<br />
        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1a73e8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"></path></svg><br />
      </a>
    </div>
</p>
</div>
</div>
</p>
<h2 class="wp-block-heading">Conclusão</h2>
</p>
<p class="wp-block-paragraph">O registro CNAME é o apelido do DNS: ele aponta um nome para outro, e não para um IP, o que o torna a escolha certa para subdomínios como o <code>www</code> e para serviços externos que mudam de endereço. Guarde três coisas: <strong>um nome com CNAME não pode ter mais nenhum registro</strong> — essa única regra explica quase todos os erros; <strong>por isso não se usa CNAME na raiz do domínio</strong>, e a saída é o registro A ou o ALIAS/ANAME do seu provedor; e <strong>cadeias longas custam latência</strong>, então aponte direto para o nome que tem o registro A. Com isso, o CNAME deixa de ser fonte de erro e vira a ferramenta de manutenção que ele foi feito para ser.</p>
</p>
<p class="wp-block-paragraph">
<p>O post <a href="https://www.homehost.com.br/blog/internet/registro-cname/" data-wpel-link="internal" target="_self">Registro CNAME: o que é, como funciona e quando usar</a> apareceu primeiro em <a href="https://www.homehost.com.br/blog" data-wpel-link="internal" target="_self">Homehost</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16843</post-id>	</item>
	</channel>
</rss>
