Como alterar o tamanho máximo do arquivo enviado em 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

Por que o PHP não permite enviar um arquivo maior que 2 MB?

\n

Você já tentou enviar para um site uma foto de alta qualidade, uma apresentação ou um vídeo, e o PHP respondeu secamente: «The uploaded file exceeds the upload_max_filesize directive in php.ini»? Familiar? Este é um problema clássico que aparece em um em cada dois projetos. No Stack Overflow, a pergunta «Change the maximum upload file size» acumulou dezenas de milhares de visualizações — e não é por acaso.

\n

Neste artigo, vamos analisar como funciona a limitação de upload de arquivos no PHP, onde ela é configurada e como aumentar o limite corretamente. Você aprenderá não apenas sobre upload_max_filesize, mas também sobre as armadilhas que podem anular todos os seus esforços.

\n\n

Como o PHP limita o upload de arquivos?

\n

Quando você envia um arquivo através de um formulário, o PHP verifica seu tamanho em vários níveis. Se pelo menos um deles não permitir — o arquivo não será enviado. Vamos analisar os três principais parâmetros que precisam ser alterados para que change the maximum upload file size funcione corretamente.

\n\n

1. upload_max_filesize — limite direto por arquivo

\n

Este é o parâmetro mais óbvio. Ele define o tamanho máximo de um único arquivo enviado. Por padrão, o PHP usa 2M (2 megabytes). Para aumentar, por exemplo, para 100 MB, você precisa escrever:

\n
upload_max_filesize = 100M
\n\n

2. post_max_size — tamanho de toda a requisição POST

\n

Aqui muitos caem em armadilha. Mesmo que você tenha aumentado upload_max_filesize, mas tenha esquecido do post_max_size, o upload ainda não funcionará. Por quê? Porque o arquivo é transmitido dentro da requisição POST, e se o tamanho total da requisição exceder o limite — o PHP simplesmente a cortará.

\n

A regra é simples: post_max_size deve ser maior que upload_max_filesize. Geralmente, define-se 20-30% a mais. Exemplo:

\n
post_max_size = 120M
\n\n

3. max_execution_time — tempo para upload

\n

Arquivos grandes não são enviados instantaneamente. Se o arquivo pesa 100 MB e a internet é lenta, o script pode simplesmente não terminar dentro do tempo permitido. Por padrão, max_execution_time = 30 segundos. Para arquivos grandes, aumente para 300-600 segundos:

\n
max_execution_time = 600
\n\n

4. memory_limit — memória para processamento

\n

Alguns scripts PHP carregam o arquivo na memória antes de processá-lo. Se memory_limit for menor que o tamanho do arquivo — você receberá um erro. Recomenda-se defini-lo maior que post_max_size:

\n
memory_limit = 256M
\n\n

Onde e como alterar as configurações?

\n

Agora que sabemos quais parâmetros são responsáveis por change the maximum upload file size, vamos analisar onde alterá-los. Você tem três caminhos principais:

\n\n

Método 1: php.ini (arquivo de configuração principal)

\n

Este é o método mais confiável. Encontre o arquivo php.ini no servidor (geralmente está em /etc/php/ ou /usr/local/etc/). Abra-o e encontre as diretivas necessárias. Se não existirem, adicione no final do arquivo:

\n
; Permitir upload de arquivos (deve ser On)\nfile_uploads = On\n\n; Tamanho máximo de um único arquivo\nupload_max_filesize = 100M\n\n; Tamanho máximo da requisição POST\npost_max_size = 120M\n\n; Tempo de execução do script\nmax_execution_time = 600\n\n; Limite de memória\nmemory_limit = 256M
\n

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

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

Método 2: .htaccess (apenas para Apache)

\n

Se você não tem acesso ao php.ini (por exemplo, em hospedagem compartilhada), pode tentar através do .htaccess na raiz do site:

\n
php_value upload_max_filesize 100M\nphp_value post_max_size 120M\nphp_value max_execution_time 600\nphp_value memory_limit 256M
\n

Importante: este método funciona apenas

Blogs

Book Recommendations