Pular para o conteúdo principal

Limite baixo da variável max_input_vars no PHP

Descrição do problema

Durante o uso do Omeka S no ambiente sgm.ufg.br, foi identificado um problema ao salvar páginas, formulários e configurações administrativas que continham muitos campos.

O comportamento observado incluía:

  • páginas não salvando corretamente;
  • formulários retornando erro ou tela em branco;
  • alterações realizadas no painel não sendo persistidas;
  • campos desaparecendo após salvar;
  • falha ao salvar páginas com muitos blocos, mídias, recursos ou metadados;
  • erro relacionado ao limite de variáveis aceitas pelo PHP.

O problema estava relacionado à configuração da variável PHP: max_input_vars

Causa do problema

A variável max_input_vars define a quantidade máxima de variáveis que o PHP aceita em uma única requisição, especialmente em envios do tipo POST. Por padrão, muitos ambientes PHP utilizam o seguinte valor:

max_input_vars = 1000

Esse limite pode ser insuficiente para o Omeka S, principalmente em telas administrativas com muitos campos, como páginas com vários blocos, formulários extensos, configurações de módulos, metadados e recursos vinculados. Quando o número de campos enviados ultrapassa esse limite, o PHP descarta parte das informações da requisição. Como consequência, o Omeka S não recebe todos os dados necessários para concluir o salvamento corretamente.

Solução aplicada

Para corrigir o problema, foi necessário aumentar o limite da variável max_input_vars no PHP.

O valor foi ajustado para:

max_input_vars = 6000

A alteração deve ser feita no arquivo de configuração do PHP-FPM utilizado pelo site. No caso do ambiente com PHP, o arquivo principal é:

/etc/php/fpm/php.ini

Após a alteração, foi necessário reiniciar o serviço do PHP-FPM para aplicar a nova configuração:

sudo systemctl restart php-fpm

Em ambientes com Nginx, também pode ser recomendado reiniciar o serviço web:

sudo systemctl restart nginx