Veja como configurar o php.ini do PHP-FPM para aumentar memory_limit, upload_max_filesize e max_execution_time, e como ativar e ajustar o OPcache.
Para que serve
Mensagens como "Allowed memory size exhausted", "The uploaded file exceeds the upload_max_filesize directive" ou "Maximum execution time exceeded" indicam limites do PHP abaixo do que o site precisa. Este artigo mostra como configurar o php.ini sem errar o arquivo, onde fica cada configuração, quais valores são razoáveis e como ativar e dimensionar o OPcache, que acelera qualquer aplicação PHP.
Pré-requisitos
- Acesso root ao servidor ou à VM do site.
- Saber qual versão do PHP e qual modo o site usa: PHP-FPM com Nginx (o mais comum), PHP-FPM com Apache ou um painel de controle.
Passo a passo: como configurar o php.ini
1. Descubra qual php.ini está valendo
O PHP de linha de comando (CLI) e o do site (FPM) usam arquivos diferentes. Alterar o arquivo errado é o erro mais comum.
ls /etc/php/ # versões instaladas
php --ini # arquivo usado pela CLI (não é o do site)
ls /etc/php/8.4/fpm/php.ini # arquivo do PHP-FPM no Debian 13 (8.3 no Ubuntu 24.04)
Para ter certeza, crie temporariamente um arquivo com <?php phpinfo(); na raiz do site e procure por Loaded Configuration File. Apague-o em seguida.
Em painéis: no cPanel use MultiPHP INI Editor; no Plesk, Configurações do PHP do domínio; no CloudPanel, a aba PHP Settings do site; no Virtualmin, Web Configuration > PHP Options. Edições manuais podem ser sobrescritas pelo painel.
2. Prefira um arquivo próprio em vez de editar o php.ini
Crie /etc/php/8.4/fpm/conf.d/99-ajustes.ini. Ele é lido depois dos demais, sobrevive às atualizações de pacote e deixa claro o que foi mudado:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
max_input_time = 120
max_input_vars = 3000
date.timezone = America/Sao_Paulo
expose_php = Off
3. Entenda cada valor
| Diretiva | O que faz | Recomendação |
|---|---|---|
memory_limit | Memória máxima que um script pode usar | 128M a 256M para a maioria dos sites; 512M só se a aplicação exigir. Valor alto demais multiplicado por muitos processos esgota a RAM. |
upload_max_filesize | Tamanho máximo de cada arquivo enviado | Conforme a necessidade real |
post_max_size | Tamanho total do formulário enviado | Igual ou maior que upload_max_filesize |
max_execution_time | Tempo de execução do script, em segundos (no Linux, espera por banco ou rede não conta) | 60 a 120; tarefas longas devem rodar pela CLI ou por fila |
max_input_vars | Quantidade de campos aceitos num formulário | 3000 resolve menus grandes no WordPress e formulários de ERP |
client_max_body_size 64m; no server block, senão o erro será 413 Request Entity Too Large antes mesmo de chegar ao PHP. Se o Nginx ou um proxy encerra a conexão antes do PHP terminar, confira também fastcgi_read_timeout e request_terminate_timeout do pool.4. Valores por site (pools do PHP-FPM)
Se cada site tem seu pool, você pode dar limites diferentes sem mexer no global. No arquivo do pool (por exemplo /etc/php/8.4/fpm/pool.d/exemplo.conf):
php_admin_value[memory_limit] = 512M
php_admin_value[upload_max_filesize] = 200M
php_admin_value[post_max_size] = 200M
Valores definidos com php_admin_value não podem ser alterados pela aplicação com ini_set(); use php_value se quiser permitir.
5. Ative e dimensione o OPcache
O OPcache guarda o código PHP já compilado na memória, evitando recompilar a cada requisição. Costuma reduzir bastante o uso de CPU. Acrescente ao mesmo 99-ajustes.ini:
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 60
memory_consumption(MB) deve caber todo o código dos sites do pool. Servidores com muitos WordPress costumam precisar de 256 a 512.max_accelerated_filesprecisa ser maior que o total de arquivos .php:find /srv -name "*.php" | wc -l.revalidate_freq = 60faz o PHP conferir alterações nos arquivos no máximo a cada 60 segundos. Em ambiente de deploy controlado, você pode usarvalidate_timestamps = 0para ganhar desempenho, mas aí cada deploy exige recarregar o PHP-FPM.
O JIT (opcache.jit) ajuda pouco em sites típicos, que passam a maior parte do tempo esperando o banco. Deixe-o desligado, a menos que tenha medido ganho.
6. Aplique
php-fpm8.4 -t && systemctl reload php8.4-fpm
O reload recarrega a configuração sem derrubar requisições em andamento.
Como saber se funcionou
- Confira pelo próprio FPM, não pela CLI: crie um
phpinfo()temporário e procure os valores, ou usephp-fpm8.4 -i | grep -E "memory_limit|upload_max"(este último lê a configuração do FPM). - Para o OPcache, um script temporário com
<?php print_r(opcache_get_status(false));mostra a memória usada e a taxa de acertos (opcache_hit_rate). O ideal é acima de 99% depois de alguns minutos de uso. - Se
cache_fullaparecer como verdadeiro ou houver muitosoom_restarts, aumentememory_consumption.
Problemas comuns
- Alterei e nada mudou: você editou o arquivo da CLI ou do Apache, ou não recarregou o serviço. Ou o painel de controle define o valor em outro lugar.
- Erro 413 no upload: limite do Nginx (
client_max_body_size) ou do Cloudflare (100 MB no plano gratuito). - Servidor sem memória depois de aumentar o memory_limit: revise
pm.max_children. O pior caso émemory_limit × max_children. Veja também o artigo «OOM killer no Linux: como entender o uso de memória, configurar a swap e evitar que processos sejam encerrados». - Alteração no código não aparece: com
validate_timestamps = 0, recarregue o PHP-FPM a cada deploy.
Perguntas frequentes
Onde fica o php.ini no Debian e no Ubuntu?
O do site, com PHP-FPM, fica em /etc/php/VERSÃO/fpm/php.ini (por exemplo /etc/php/8.4/fpm/php.ini). O que aparece em php --ini é o da linha de comando, que não afeta o site.
Como aumentar o limite de upload do PHP?
Aumente upload_max_filesize e post_max_size (este igual ou maior) e ajuste também o client_max_body_size do Nginx. Depois recarregue o PHP-FPM e o Nginx.
Qual memory_limit usar no WordPress?
De 128M a 256M atende a maioria dos sites. Valores muito altos, multiplicados pelo número de processos do PHP-FPM, podem esgotar a RAM.
Preciso reiniciar o servidor depois de mudar o php.ini?
Não. Basta systemctl reload php8.4-fpm (ou a versão que você usa), que aplica a configuração sem derrubar as requisições em andamento.
Vale a pena ativar o OPcache?
Sim. Ele guarda o código PHP já compilado na memória e costuma reduzir bastante o uso de CPU. Confira a taxa de acertos depois de alguns minutos de uso.
Leitura complementar
Precisa de ajuda?
Se ficar com alguma dúvida, abra um ticket na área do cliente ou fale com o suporte pelo WhatsApp.
