Qual versão do PHP usar no Moodle: tabela de 4.1 a 5.3 e comandos

"Qual versão do PHP eu uso no Moodle?" é das perguntas mais buscadas por quem administra a plataforma, e com razão: PHP fora da faixa suportada é a causa número um de erro 500 depois de uma atualização, seja do Moodle, seja da hospedagem.

Abaixo, a tabela oficial, a lógica das "versões ponte" para atualizar sem quebrar e os comandos para conferir e trocar o PHP no servidor.

Tabela: PHP suportado por versão do Moodle

MoodlePHP mínimoPHP máximo
5.3 (LTS)8.38.4
5.28.38.4
5.18.28.4
5.08.28.4
4.5 (LTS)8.18.3
4.48.18.3
4.1 (LTS)7.48.1

Fonte: política oficial de PHP do Moodle. No 5.3, o PHP 8.5 aparece só para desenvolvimento. Datas de suporte de cada versão em versões do Moodle.

Requisitos que vão além da versão

  • PHP 64 bits: obrigatório nas versões atuais.
  • Extensão sodium: obrigatória.
  • max_input_vars de pelo menos 5000: obrigatório nas versões recentes, como 5.1 e 5.3. Com valor menor, formulários grandes (como permissões e notas) salvam pela metade.
  • Extensões de uso comum: intl, mbstring, xml, zip, gd, curl, soap e o driver do seu banco (mysqli ou pgsql).

Versões ponte: como atualizar sem quebrar

O PHP e o Moodle precisam subir em escada, sempre passando por uma versão de PHP que sirva para os dois lados:

  • Do 4.1 para o 4.5: o PHP 8.1 é a ponte (é o máximo do 4.1 e o mínimo do 4.5).
  • Do 4.5 para o 5.3: o PHP 8.3 é a ponte (máximo do 4.5 e mínimo do 5.3).
  • Atenção: para atualizar para o 5.3, o site precisa já estar no 4.4 ou superior. Quem está no 4.1 passa antes pelo 4.5.

Ordem segura: ajuste o PHP para a versão ponte, atualize o Moodle, depois suba o PHP de novo se quiser. Contamos um caso real em upgrade encadeado de um Moodle 3.x.

Comandos: conferir o PHP do servidor

Versão do PHP da linha de comando:

php -v

Extensões que o Moodle usa:

php -m | grep -i -E "sodium|intl|mbstring|xml|zip|gd|curl|soap|mysqli|pgsql"

Configurações importantes:

php -i | grep -E "max_input_vars|memory_limit|upload_max_filesize|post_max_size"

No navegador, o próprio Moodle mostra o PHP do site em Administração do site > Servidor > Informações do PHP e verifica os requisitos em Administração do site > Servidor > Ambiente.

O erro mais comum: dois PHPs diferentes

Em muitos servidores, o PHP do site (FPM) e o PHP da linha de comando são versões diferentes. O site funciona, mas o cron roda com outro PHP e falha. Para conferir quais versões estão instaladas no Ubuntu:

ls /usr/bin/php*
update-alternatives --list php

Para fixar a versão da linha de comando:

sudo update-alternatives --set php /usr/bin/php8.3

E, no cron, chame o PHP pelo caminho completo, para não depender do padrão do sistema:

* * * * * /usr/bin/php8.3 /caminho/do/moodle/admin/cli/cron.php >/dev/null 2>&1

A partir do Moodle 5.1, confira o caminho dos scripts conforme a nova estrutura com a pasta public.

Instalar o PHP 8.3 no Ubuntu

No Ubuntu 24.04, o PHP 8.3 é o padrão do sistema:

sudo apt update
sudo apt install php8.3-fpm php8.3-cli php8.3-intl php8.3-mbstring php8.3-xml \
  php8.3-zip php8.3-gd php8.3-curl php8.3-soap php8.3-mysql php8.3-pgsql

Depois de trocar a versão ou o php.ini, reinicie o PHP-FPM:

sudo systemctl restart php8.3-fpm

php.ini: valores de referência

O único valor obrigatório é o max_input_vars. Os outros são pontos de partida comuns, a ajustar conforme o uso:

; php.ini (em hospedagem compartilhada, muitas vezes .user.ini)
max_input_vars = 5000
memory_limit = 256M
upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 300

Limites de upload têm mais de um lugar para ajustar. Veja limite de upload no Moodle.

Hospedagem compartilhada

No painel da hospedagem, a versão do PHP costuma ser escolhida por domínio, e o .user.ini substitui o php.ini. O ponto de atenção é a hospedagem atualizar o PHP sozinha. Antes de aceitar uma troca, confira a tabela acima. Mais detalhes em instalar Moodle na hospedagem compartilhada.

Perguntas frequentes

Qual versão do PHP o Moodle 5.3 precisa?

O Moodle 5.3 exige no mínimo PHP 8.3 e também suporta o PHP 8.4, sempre em 64 bits, com a extensão sodium e max_input_vars de pelo menos 5000.

Qual versão do PHP usar no Moodle 4.5?

O Moodle 4.5 suporta do PHP 8.1 ao 8.3. O PHP 8.3 é a melhor escolha, porque é também o mínimo do Moodle 5.3 e facilita a próxima atualização.

Posso usar PHP 8.5 no Moodle?

Não em produção. Na data deste post, o PHP 8.5 é indicado só para desenvolvimento no Moodle 5.3.

Por que o Moodle quebrou depois que a hospedagem atualizou o PHP?

Cada versão do Moodle suporta uma faixa de PHP. Se a hospedagem subiu o PHP para fora dessa faixa, aparecem erro 500 ou página em branco. A solução é voltar para uma versão compatível ou atualizar o Moodle.

Quanto tempo leva para ajustar o PHP do Moodle?

Com acesso ao servidor, trocar a versão, ajustar o php.ini e testar costuma caber em uma hora técnica.

Alejandro Argachá, especialista em Moodle

Escrito por Alejandro Argachá

Trabalha com Moodle desde 2011, com mais de 250 projetos entregues, boa parte para outras empresas que vendem Moodle. Resolve na prática problemas como este em plataformas de empresas e instituições brasileiras. Ver casos reais.