Como alterar o tamanho máximo de upload de arquivo no PHP: guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: "Arquivo muito grande" — uma dor familiar?

\n\n

Você já tentou enviar para um site sua foto em alta resolução, um vídeo para o blog ou um arquivo ZIP com documentos, e de repente se deparou com o erro implacável: "Tamanho máximo do arquivo de upload excedido"? Se sim, você não está sozinho. No Stack Overflow, a pergunta "Change the maximum upload file size" acumulou dezenas de milhares de visualizações, o que significa que centenas de milhares de desenvolvedores (de iniciantes a profissionais) já enfrentaram essa barreira.

\n\n

No portal educacional PythonLib, ensinamos não apenas a copiar código, mas a entender como tudo funciona por dentro. Hoje, de forma simples e com exemplos práticos, vamos explicar como alterar o limite de upload no PHP. Você descobrirá onde as configurações estão escondidas, por que nem sempre funcionam e como evitar as armadilhas mais comuns. Vamos nessa!

\n\n

Por que o PHP não permite enviar arquivos grandes?

\n\n

Por padrão, o PHP é bastante modesto. Ele permite o upload de arquivos de apenas 2 megabytes (e em versões antigas, até menos). Isso é feito por questões de segurança: imagine que um invasor envie um arquivo de vários gigabytes para o seu servidor e derrube o site. Mas para tarefas legítimas (como enviar um portfólio ou uma videoaula), esse limite é extremamente baixo.

\n\n

De onde vem o limite? A resposta está em três diretivas principais na configuração do PHP:

\n\n
    \n
  • upload_max_filesize — tamanho máximo de um único arquivo enviado.
  • \n
  • post_max_size — tamanho máximo de todos os dados enviados via método POST (incluindo arquivos e campos de texto do formulário).
  • \n
  • max_execution_time — tempo que o PHP pode gastar na execução do script (o upload de um arquivo grande pode levar minutos).
  • \n
\n\n

Se você aumentar apenas o upload_max_filesize, mas esquecer do post_max_size, o upload ainda falhará com erro. É como tentar colocar um elefante no porta-malas, quando o porta-malas é menor que o elefante. Ou como ter uma caixa grande (arquivo), mas a abertura da caixa de correio (post_max_size) ser estreita demais.

\n\n

Onde ficam as configurações do PHP? Três caminhos para o sucesso

\n\n

Você tem três maneiras de alterar o tamanho máximo de upload de arquivo. Qual escolher depende da sua hospedagem e nível de acesso. Vamos analisar cada uma.

\n\n

Método 1. Editando o php.ini (o padrão ouro)

\n\n

O arquivo php.ini é o principal "painel de controle" do PHP. Se você tem acesso ao servidor (VPS, servidor dedicado ou computador local), esta é a maneira mais confiável.

\n\n

Encontre seu php.ini. Geralmente ele está em:

\n
    \n
  • Linux: /etc/php/8.x/apache2/php.ini ou /etc/php/8.x/cli/php.ini
  • \n
  • Windows: C:\\xampp\\php\\php.ini (para XAMPP) ou C:\\wamp64\\bin\\php\\php8.x\\php.ini
  • \n
\n\n

Abra o arquivo e encontre (ou adicione) as seguintes linhas:

\n\n
; Tamanho máximo de um único arquivo (agora 50 MB)\nupload_max_filesize = 50M\n\n; Tamanho máximo de todos os dados POST (deve ser maior ou igual a upload_max_filesize)\npost_max_size = 64M\n\n; Tempo máximo de execução do script em segundos (para arquivos grandes, aumente para 300)\nmax_execution_time = 300\n\n; Tempo máximo para receber dados (recomenda-se pelo menos 5 minutos)\nmax_input_time = 300\n\n; Memória por script (se o arquivo for grande, aumente para 128M ou 256M)\nmemory_limit = 128M
\n\n

Após as alterações, reinicie o servidor web:

\n
sudo systemctl restart apache2   # para Apache\nsudo systemctl restart nginx     # para Nginx
\n\n

Pronto! Agora seu site pode receber arquivos de até 50 MB. Mas lembre-se: post_max_size deve ser sempre alguns megabytes maior que upload_max_filesize para que haja espaço para os cabeçalhos do formulário.

\n\n

Método 2. A mágica do .htaccess (para compartilhados)

\n

Blogs

Book Recommendations