
⚙️ Como corrigir o erro "The uploaded file exceeds the upload_max_filesize directive" no php.ini
Faz o upload de um tema, plugin ou imagem para a biblioteca de multimédia do WordPress e vê uma linha vermelha: «The uploaded file exceeds the upload_max_filesize directive in php.ini.» O ficheiro tem 10 megabytes e o WordPress não o aceita. Uma situação familiar para qualquer pessoa que administre um site.
O problema não é do WordPress nem do seu ficheiro. Os fornecedores de alojamento limitam o tamanho dos ficheiros de upload ao nível do PHP, e o limite padrão de 2 megabytes não muda há anos. Pode aumentá-lo em cinco minutos usando qualquer um dos cinco métodos abaixo, do mais simples ao mais avançado.
💡 Visão geral rápida:
- Aumente o limite através do wp-config.php com uma única chamada
ini_set, funciona na maioria dos alojamentos - Altere as definições no cPanel através do MultiPHP INI Editor, se o seu alojamento usar cPanel
- Crie ou edite o php.ini via FTP, um método que funciona independentemente do painel de controlo
- Adicione diretivas ao.htaccess quando não tiver acesso ao php.ini
- Como último recurso, adicione
@ini_setno functions.php do seu tema filho
De onde vem o limite upload_max_filesize
A diretiva upload_max_filesize reside no ficheiro de configuração php.ini, o ficheiro principal de definições do PHP no seu servidor. Determina o tamanho máximo de um único ficheiro enviado. O valor padrão é 2 megabytes, o que é suficiente para imagens pequenas, mas um tema do WordPress ou um vídeo não cabem nesse limite.
Duas outras diretivas funcionam em conjunto com ela: post_max_size (tamanho total do pedido POST, padrão 8 MB) e memory_limit (memória disponível para o script, padrão 128 MB). As três estão interligadas: se aumentar a upload_max_filesize, verifique se a post_max_size não é inferior ao novo valor, caso contrário a restrição permanecerá no nível anterior.
Pode verificar os limites atuais diretamente no painel de administração do WordPress: vá a Multimédia → Adicionar novo e veja a linha abaixo da área de upload, que mostra o tamanho máximo. Em alternativa, instale o plugin PHP Info e encontre as diretivas relevantes na saída do phpinfo().
1. Aumentar o limite através do wp-config.php
O método mais rápido que funciona na maioria dos alojamentos partilhados. O ficheiro wp-config.php está localizado na pasta raiz do site e é carregado antes de qualquer código do WordPress ser executado, por isso as diretivas ini_set nele contidas têm prioridade.
Ligue-se ao servidor através de um cliente FTP (FileZilla, uma opção gratuita e fiável) ou abra o Gestor de Ficheiros no painel de controlo do seu alojamento. Encontre o wp-config.php na pasta raiz (normalmente public_html):

Adicione as seguintes linhas no final do ficheiro, antes do comentário /* That's all, stop editing! */:
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Guarde o ficheiro e atualize a página da biblioteca de multimédia do WordPress. O limite de upload deverá mudar para 64 megabytes. Se o número não tiver mudado, o fornecedor de alojamento bloqueou o ini_set, por isso passe para o método seguinte.
2. Alterar definições através do MultiPHP INI Editor no cPanel
Se o seu alojamento usar cPanel, o MultiPHP INI Editor integrado permite-lhe alterar as definições do PHP sem editar ficheiros manualmente. Aplica automaticamente os valores ao site selecionado e substitui os padrões do alojamento.
Inicie sessão no cPanel e encontre a secção Software → MultiPHP INI Editor:

Selecione o site pretendido no menu suspenso no topo da página. Desça até à diretiva upload_max_filesize e introduza o novo valor (por exemplo, 64M). Abaixo, encontre post_max_size e defina-o ligeiramente mais alto, 80M. Clique em Apply. As alterações têm efeito imediato.
Este método é preferível ao primeiro: o cPanel trata da sintaxe automaticamente e as definições não são repostas após atualizações do WordPress.
3. Editar o php.ini via FTP
Se não tiver acesso ao cPanel ou se o seu alojamento não suportar o MultiPHP INI Editor, trabalhe diretamente com o ficheiro php.ini. Este controla todas as definições do PHP e a sua modificação é a forma mais fiável de aumentar os limites.
Ligue-se ao servidor via FTP e navegue até à pasta raiz do site. Encontre o ficheiro php.ini. Se não existir (o php.ini do utilizador está frequentemente ausente em alojamentos partilhados), crie um novo ficheiro de texto com esse nome:

Adicione as seguintes diretivas ao ficheiro:
1 upload_max_filesize = 64M 2 post_max_size = 80M 3 memory_limit = 256M 4 file_uploads = On 5 max_execution_time = 300 6 max_input_time = 300
Guarde o ficheiro. Para que as alterações tenham efeito, alguns fornecedores de alojamento exigem uma diretiva suPHP no ficheiro .htaccess. Adicione este bloco ao .htaccess:
1 <IfModule mod_suphp.c> 2 suPHP_ConfigPath /home/yourusername/public_html 3 </IfModule>
Substitua yourusername pelo nome de utilizador da sua conta de alojamento. Se o site falhar com um erro após adicionar este bloco, remova-o: o seu servidor corre em CGI e não necessita de suPHP.
Em servidores locais, o caminho para o php.ini depende da plataforma: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/version/apache2/php.ini. Após editar, reinicie o servidor web.
4. Adicionar diretivas ao.htaccess
Quando o fornecedor de alojamento bloqueou o acesso ao php.ini e o ini_set não funciona, a última linha de defesa ao nível do servidor é o ficheiro .htaccess. Este permite-lhe definir configurações PHP para uma pasta específica do site usando diretivas php_value.
Ligue-se por FTP e localize o .htaccess na pasta raiz. Descarregue uma cópia de segurança para o seu computador (obrigatório!). Depois, adicione as seguintes linhas no final do ficheiro:

1 php_value upload_max_filesize 64M 2 php_value post_max_size 80M 3 php_value memory_limit 256M 4 php_value max_execution_time 300 5 php_value max_input_time 300
Guarde o .htaccess e atualize o site. Se aparecer um erro 500 Internal Server Error em vez do site, o seu servidor corre em CGI e a diretiva php_value no .htaccess não é suportada. Elimine as linhas adicionadas para restaurar o site e use o método 3 (criar o php.ini).
Abordámos o erro 500 e a sua variante 502 em detalhe no nosso guia para corrigir erros de servidor no WordPress.
5. Adicionar @ini_set no functions.php do seu tema
Este método é para situações em que todos os métodos anteriores estão indisponíveis ou pretende manter as configurações no repositório do tema. Adicione o código ao ficheiro functions.php do seu tema filho, que é executado a cada pedido e substitui os limites em tempo real.
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Coloque o código no final do functions.php, mas antes do fecho ?> (se existir). Use um tema filho: quando o tema principal é atualizado, as edições no functions.php do tema principal são repostas, enquanto um tema filho sobrevive às atualizações sem perdas.
Após adicionar o código, verifique o limite na biblioteca de media do WordPress. Note que em alguns alojamentos, o ini_set para upload_max_filesize está bloqueado ao nível do PHP (a diretiva PHP_INI_SYSTEM não permite alterar o valor em tempo de execução). Nesse caso, o @ini_set será silenciosamente ignorado e precisa do método 3 ou 4.
Porque é que o limite não mudou: diagnóstico
Seguiu todas as instruções, mas o limite manteve-se? Percorra esta lista de verificação:
post_max_sizeé menor do que o novoupload_max_filesize. Esta é a causa mais comum:post_max_sizedeve ser pelo menos igual e, de preferência, 20-30% maior do queupload_max_filesize: a documentação do PHP exige explicitamente quepost_max_size≥upload_max_filesize. Os envios em lote de vários ficheiros e os campos de formulário contam para opost_max_size.- O ficheiro foi criado na pasta errada. O PHP procura o
php.inino diretório do script e depois sobe na árvore até à raiz do servidor. Coloque ophp.inina raiz do site (public_html) e não numa subpasta. - A cache do PHP (OPcache) armazena a configuração antiga. Alguns servidores guardam o
php.iniem cache. Reinicie o PHP através do painel de alojamento ou aguarde 5-10 minutos para que a cache expire. - O servidor corre em CGI/FastCGI e ignora o
.htaccess. Mude de abordagem: use ophp.ini(método 3) ou ouser.inipara FastCGI. - O fornecedor de alojamento bloqueou o limite. Em planos ultra-económicos, o limite de envio é fixo e não pode ser alterado por nenhum método, exceto atualizando o seu plano.
Se nenhum destes pontos ajudou, contacte o suporte do alojamento. Forneça o seu domínio, o método que usou para alterar o limite e peça-lhes para verificar se a substituição do upload_max_filesize é permitida no seu plano.
Tutorial em vídeo
Veja o processo passo a passo de correção deste erro, do diagnóstico à verificação final, neste vídeo:
⁉️🤔 Perguntas frequentes
Que valor devo escolher para o upload_max_filesize?
Para a maioria dos sites, 64 MB é suficiente, cobrindo uploads de temas, plugins e imagens de alta resolução. Se trabalha com ficheiros de vídeo ou grandes arquivos ZIP através do painel de administração, defina-o para 128-256 MB. Não procure gigabytes sem motivo: quanto maior o limite, mais memória o servidor reserva para cada pedido de upload.
Posso carregar um ficheiro contornando o limite?
Sim, via FTP. Um cliente FTP liga-se diretamente ao servidor e não passa pelo handler do PHP, pelo que os limites de
upload_max_filesizenão se lhe aplicam. Carregue o ficheiro parawp-content/uploadsvia FTP e, em seguida, registe-o na biblioteca de multimédia do WordPress usando o plugin Add From Server.
Qual é a diferença entre upload_max_filesize e post_max_size?
upload_max_filesizeé o tamanho máximo de um único ficheiro num upload.post_max_sizeé o tamanho total de todo o pedido POST, incluindo todos os ficheiros, campos de formulário e cabeçalhos de serviço. Se estiver a carregar três ficheiros de 20 MB,upload_max_filesizedeve ser ≥ 20 MB, enquantopost_max_sizedeve ser ≥ 60 MB mais uma margem para o formulário. É por isso quepost_max_sizeé sempre definido com um valor superior aoupload_max_filesize.
Porque é que os limites são repostos após atualizações do WordPress?
O WordPress não mexe nas configurações do servidor PHP durante as atualizações, mas se editou o
wp-config.phpou ofunctions.phpdo tema principal, as atualizações do core ou do tema podem ter substituído esses ficheiros. Mantenha sempre as configurações personalizadas do PHP nophp.ini, no Editor MultiPHP INI do cPanel ou num tema filho: estas localizações não são afetadas pelas atualizações.
Preciso de reiniciar o servidor depois de alterar o php.ini?
Para alojamento partilhado e cPanel, não: as alterações aplicam-se automaticamente em poucos minutos. Para VPS e servidores dedicados com PHP-FPM, reinicie o serviço:
sudo systemctl restart php-fpm(ouphp8.3-fpm, dependendo da versão). O Apache com mod_php geralmente assume as alterações sem necessidade de reinicialização.
O que fazer se o limite continuar sem aumentar
Os cinco métodos acima cobrem virtualmente qualquer cenário de alojamento. Do básico wp-config.php ao functions.php do tema filho, percorreu toda a cadeia. Se, depois de executar honestamente cada passo e de fazer diagnósticos, o limite permanecer inalterado, a causa é uma política restritiva do fornecedor de alojamento e não poderá contorná-la sem mudar de plano ou de fornecedor.
Contacte o suporte e pergunte diretamente se é permitido substituir o upload_max_filesize no seu plano. Uma resposta negativa é motivo para considerar mudar para um VPS ou um plano partilhado mais flexível, onde controle as configurações do PHP sem se preocupar com os vizinhos de servidor. Entretanto, carregue ficheiros grandes via FTP: aí não há restrições de tamanho e o Add From Server irá integrá-los na biblioteca de multimédia.



