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

DiretivaO que fazRecomendação
memory_limitMemória máxima que um script pode usar128M 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_filesizeTamanho máximo de cada arquivo enviadoConforme a necessidade real
post_max_sizeTamanho total do formulário enviadoIgual ou maior que upload_max_filesize
max_execution_timeTempo 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_varsQuantidade de campos aceitos num formulário3000 resolve menus grandes no WordPress e formulários de ERP
O limite de upload também existe no servidor web. No Nginx, ajuste 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_files precisa ser maior que o total de arquivos .php: find /srv -name "*.php" | wc -l.
  • revalidate_freq = 60 faz o PHP conferir alterações nos arquivos no máximo a cada 60 segundos. Em ambiente de deploy controlado, você pode usar validate_timestamps = 0 para 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 use php-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_full aparecer como verdadeiro ou houver muitos oom_restarts, aumente memory_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.

Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)

Leia também